首页 > 解决方案 > AutoEncoder 无法理解为什么我的解码图像看起来像热图?

问题描述

在实现变分自动编码器时我遇到了一个大问题,所有图像最终看起来像这样:预测图像

当真实的图像是这样的:测试图像

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

我使用了更少和更多数量的过滤器,目前为 128。这个结果可以来自网络架构吗?还是少数几个时期?

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

我也尝试过实现这个架构:https ://github.com/chaitanya100100/VAE-for-Image-Generation/blob/master/src/cifar10_train.py有类似的结果,如果不是更糟的话。

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

标签: machine-learningautoencoder

解决方案


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

我建议:

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

我相信其他人会添加建议,但我会从上面开始。


推荐阅读