【发布时间】:2018-04-14 02:57:16
【问题描述】:
我在已缩放到 [0,1] 的 CIFAR10 数据集上使用这个去噪自动编码器的 implementation。 我的超参数是 -
Adam optimizer
lr = 0.0001
sigmoid activations for both encoder and decoder
512 hidden nodes
Batch size = 50
在将损失函数设置为交叉熵时,它在第一个训练步骤开始时非常庞大。但随后它在 3 步内收敛到 0,这让我很怀疑。经过一段时间的训练后,我将图像传递给 AE,并在评估解码层的输出时,它们都是 1 或接近它,而不是原始图像值。
我对正在发生的事情有一点了解。交叉熵损失在代码中定义为 -
tf.reduce_sum(self.input_data * tf.log(self.decode))
如果解码层的值全为 1,则 tf.log(self.decode) 接近于零。因此网络优化其隐藏权重,使输出接近 1,从而使交叉熵等于 0。我说的对吗?
我该如何解决这个问题?
【问题讨论】:
-
你在隐藏层中使用了什么激活函数?
标签: neural-network deep-learning autoencoder