AutoEncoder无法理解为什么我的解码图像看起来像热图?

时间:2018-10-22 22:14:59

标签: machine-learning autoencoder

在实现变体自动编码器时,我遇到了一个大问题,那就是所有图像最终看起来都像这样:predicted image

当真实图像是这样时:test image

训练集为CIFAR10,预期结果是设法构建相似的图像。虽然结果似乎正确预测了特征图,但我不明白为什么在50个历元之后结果是这样的。

我使用的过滤器数量越来越少,目前为128个。这种结果是否可以归因于网络体系结构?还是几个纪元?

使用的损失函数是MSE和优化器RMSPROP。

我也尝试过实现这种体系结构:https://github.com/chaitanya100100/VAE-for-Image-Generation/blob/master/src/cifar10_train.py具有相似的结果,甚至还不错。

我很困惑这里可能是什么问题。保存方法是使用matplotlib pyplot保存预测及其真实对应项。

1 个答案:

答案 0 :(得分:1)

无益的答案是“自动编码器很难”!您的网络陷入了局部最小值,每次都会预测整个数据集的平均像素值。

我建议:

  • 改变学习率,包括大幅度降低学习率。最终您可能需要训练更长的时间,但是只需训练几个时期,并检查每次预测相同的图像时是否卡住了。
  • 添加更多过滤器,因为这应该使输入到输出映射的操作更容易学习,尽管在增加“压缩”版本的大小时,这在一定程度上不利于自动编码器的用途。
  • 尝试使用绝对错误来弥补损失。这有助于使已经彼此接近(即相距小于一)的值回归。

我确定其他人会添加建议,但是我将从上面开始。