如何将警报器激活功能集成到cnn

问题描述

我试图实现一个具有周期性激活功能自动编码器 - siren Link。但是我找到了仅使用线性层的示例。在论文中,他们提到了一个使用 CNN 的自定义超网络,但我不明白如何用于我的自动编码器。

  • 是否可以为 CNN 实现 siren
  • 如何实现下面提到的我的自动编码器代码。简单地添加 sin() 作为激活函数是行不通的,因为作者提到了自定义初始化和其他一些使周期性激活起作用的技巧。

我在此附上论文 - Link

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,padding=1)
        self.enc3 = nn.Conv2d(32,16,padding=1)
        self.enc4 = nn.Conv2d(16,8,padding=1)
        self.pool = nn.MaxPool2d(2,2)
        
        # decoder layers
        self.dec1 = nn.ConvTranspose2d(8,stride=2)  
        self.dec2 = nn.ConvTranspose2d(8,stride=2)
        self.dec3 = nn.ConvTranspose2d(16,kernel_size=2,stride=2)
        self.dec4 = nn.ConvTranspose2d(32,stride=2)
        self.out = nn.Conv2d(64,1,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)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)