【发布时间】:2020-07-03 23:26:57
【问题描述】:
我正在使用 2000 个相同图像训练自动编码器。我的期望是,假设自动编码器有足够的容量,在一定的训练时间后,损失将接近 0,准确率将接近 1。相反,我看到损失 = 0.07 和准确度 = 0.76 的快速收敛。减少卷积层的数量带来了一些改进。减少每层的内核数量会增加损失。之后没有任何改善。我的期望错了吗?还是我的自动编码器架构有问题?可以做些什么来制作几乎无损的自动编码器?
input_img = Input(shape=(image_size_x, image_size_y, 1))
x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
谢谢!
【问题讨论】:
-
你有用于潜在表示的密集层吗?
-
@H. Lecter 博士:不,我没有致密层。为什么需要它以及如何将密集层集成到自动编码器中?非常感谢!
-
latent_dim 将取决于图像的类型、大小等。在 MNIST 数据集上,您可以将 latent_dim 设为 2,但这对于标准图像来说是极端的。
-
答案有帮助吗?告诉我
-
@H. Lecter 博士:非常感谢您的快速回复!目前正在尝试实施。我会尽快为您提供反馈。
标签: tensorflow keras deep-learning autoencoder