问题描述
我正在为循环函数(cos(x)
,cos(2x)
等)构建去噪器,至少可以说我得到的结果很糟糕。
直到几个小时前,该模型完全不起作用(对于所有结果仅返回0),然后我添加了nn.BatchNorm1d
,它开始“学习”。
问题在于结果确实很糟糕,看上去甚至比嘈杂的示例还要糟糕:
该模型非常简单(in_channels = 1
,K = 128
每个间隔中的样本数,B = 2
个间隔数,z_dim = 64
隐藏维数,{{1} })
out_channels = 1
我试图使模型更深,使用class LinAutoencoder(nn.Module):
def __init__(self,in_channels,K,B,z_dim,out_channels):
super(LinAutoencoder,self).__init__()
self.in_channels = in_channels
self.K = K
self.B = B
self.out_channels = out_channels
encoder_layers = []
decoder_layers = []
encoder_layers += [
nn.Linear(in_channels * K * B,in_channels * K * B,bias=True),nn.BatchNorm1d(in_channels * K * B),nn.ReLU(),nn.Linear(in_channels * K * B,nn.BatchNorm1d(z_dim),nn.ReLU()
]
decoder_layers += [
nn.Linear(z_dim,out_channels * K * B,nn.BatchNorm1d(out_channels * K * B),nn.Linear(out_channels * K * B,nn.ReLU()
]
self.encoder = nn.Sequential(*encoder_layers)
self.decoder = nn.Sequential(*decoder_layers)
print(self.decoder)
def forward(self,x):
batch_size = x.shape[0]
x_flat = torch.flatten(x,start_dim=1)
enc = self.encoder(x_flat)
dec = self.decoder(enc)
res = dec.view((batch_size,self.out_channels,self.K * self.B))
return res
代替tanh
失败了。
我使用relu
优化器用900
和lr = 0.005
训练了momentum = 0.9
个时期。
我还尝试了不同的优化器。
欢呼
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)