#machine-learning #deep-learning #computer-vision #pytorch #activation-function
Вопрос:
Я пытался реализовать автоэнкодер с функцией периодической активации — siren
Ссылка. Но я нашел примеры, использующие только линейный слой. В статье они упомянули пользовательскую гиперсеть, которая использует CNN, но я не понял, как использовать мой автоэнкодер.
- Возможно ли реализовать
siren
для CNN - как реализовать для моего кода автоэнкодера, упомянутого ниже. простое добавление
sin()
в качестве функции активации не работает, потому что автор упомянул пользовательскую инициализацию и некоторые другие приемы, позволяющие выполнять периодическую активацию.
Я прикрепляю статью сюда — Ссылка
class Autoencoder(nn.Module):
def __init__(self):
super(Autoencoder, self).__init__()
# encoder layers
self.enc1 = nn.Conv2d(1, 64, kernel_size=3, padding=1)
self.enc2 = nn.Conv2d(64, 32, kernel_size=3, padding=1)
self.enc3 = nn.Conv2d(32, 16, kernel_size=3, padding=1)
self.enc4 = nn.Conv2d(16, 8, kernel_size=3, padding=1)
self.pool = nn.MaxPool2d(2, 2)
# decoder layers
self.dec1 = nn.ConvTranspose2d(8, 8, kernel_size=3, stride=2)
self.dec2 = nn.ConvTranspose2d(8, 16, kernel_size=3, stride=2)
self.dec3 = nn.ConvTranspose2d(16, 32, kernel_size=2, stride=2)
self.dec4 = nn.ConvTranspose2d(32, 64, kernel_size=2, stride=2)
self.out = nn.Conv2d(64, 1, kernel_size=3, padding=1)
def forward(self, x):
# encode
x = F.relu(self.enc1(x))
x = self.pool(x)
x = F.relu(self.enc2(x))
x = self.pool(x)
x = F.relu(self.enc3(x))
x = self.pool(x)
x = F.relu(self.enc4(x))
x = self.pool(x) # the latent space representation
# decode
x = F.relu(self.dec1(x))
x = F.relu(self.dec2(x))
x = F.relu(self.dec3(x))
x = F.relu(self.dec4(x))
x = F.sigmoid(self.out(x))
return x
net = Autoencoder()
print(net)
Комментарии:
1. вам нужно будет реализовать специальный метод инициализации для вашего случая.
2. @Shai инициализация показана только для линейных слоев автором, можем ли мы использовать то же самое для слоев covn
3. конвективный слой является частным случаем линейного. адаптация должна быть произведена, но это возможно
4. @Шай, можешь показать мне, как мы можем это сделать, я очень новичок в этом глубоком обучении. я пытался использовать сирену в качестве автоэнкодера для шумоподавления