machine-learning - AutoEncoder 无法理解为什么我的解码图像看起来像热图?
问题描述
在实现变分自动编码器时我遇到了一个大问题,所有图像最终看起来像这样:
训练集是 CIFAR10,预期结果是设法构建相似的图像。虽然结果似乎正确预测了特征图,但我不明白为什么 50 个 epoch 后的结果是这样的。
我使用了更少和更多数量的过滤器,目前为 128。这个结果可以来自网络架构吗?还是少数几个时期?
使用的损失函数是 MSE 和优化器 RMSPROP。
我也尝试过实现这个架构:https ://github.com/chaitanya100100/VAE-for-Image-Generation/blob/master/src/cifar10_train.py有类似的结果,如果不是更糟的话。
我很困惑这可能是什么问题。保存的方法是使用 matplotlib pyplot 来保存预测及其真实对应物。
解决方案
无用的答案是“自动编码器很难”!您的网络陷入了局部最小值,每次都预测平均像素值(跨整个数据集)。
我建议:
- 改变你的学习率,包括显着降低它。您最终可能需要训练更长时间,但只需训练几个 epoch 并检查它是否每次都无法预测相同的图像。
- 添加更多过滤器,因为这应该使输入到输出的映射更容易学习,尽管这在某种程度上违背了自动编码器的目的,因为您正在增加“压缩”版本的大小。
- 尝试使用绝对错误来弥补您的损失。这有助于回归已经彼此接近的值(即相差不到一个)。
我相信其他人会添加建议,但我会从上面开始。
推荐阅读
- python - 旋转字典的值
- assembly - 为什么即使系统调用是sys_write也没有输出?
- javascript - 如何将表单动作名称作为变量传入axios ajax调用
- download - Mac OSX Catalina - Safari 不会下载文件,足够的可用空间不足
- ios - Ionic-v4 键盘覆盖 iOS 13 中的输入字段
- java - 我是否正确编码?我能做些什么来修复这些错误?
- c# - 找不到管理 FrameworkElement
- php - openssl-encrypt,PHP vs命令行-如何使IV相同
- php - 从数组中检索键的值
- mysql - 查找字符串是否包含在同一个mysql表的列中