python - keras 中的自动编码器预测每个白色图像
问题描述
我正在制作一个自动编码器,尝试图像重建。输入图像尺寸为 (256,256,3)。这是模型架构:
Model: "model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, 256, 256, 3)] 0
_________________________________________________________________
conv2d (Conv2D) (None, 256, 256, 12) 156
_________________________________________________________________
conv2d_1 (Conv2D) (None, 256, 256, 48) 2352
_________________________________________________________________
batch_normalization (BatchNo (None, 256, 256, 48) 192
_________________________________________________________________
conv2d_2 (Conv2D) (None, 256, 256, 12) 2316
_________________________________________________________________
conv2d_3 (Conv2D) (None, 256, 256, 12) 588
_________________________________________________________________
conv2d_4 (Conv2D) (None, 256, 256, 3) 327
=================================================================
Total params: 5,931
Trainable params: 5,835
Non-trainable params: 96
_________________________________________________________________
它很小,但我已经尝试了多达 5800 万个可训练参数。没什么区别。这些图像是叶子,具有对比鲜明的背景(通常接近白色)。背景通常是图像的 30-50%。损失函数是mse,尝试了binary_crossentropy(大多数博客都使用它,我不明白为什么)和kldivergence。使用 adam,但尝试了 adagrad 和 sgd。我得到了 85-90% 的准确率,但它总是一个白色的图像,或者很少有一些娱乐,但它与原始图像相去甚远。
这是我的模型代码:
original_input = layers.Input(shape=(256,256,3))
encoded = layers.Conv2D(12, (2, 2), activation='relu', padding='same')(original_input)
x = layers.Conv2D(48, (2, 2), activation='relu', padding='same')(encoded)
batch_norm = keras.layers.BatchNormalization()(x)
x = layers.Conv2D(12, (2, 2), activation='relu', padding='same')(batch_norm)
x = layers.Conv2D(12, (2, 2), activation='relu', padding='same')(x)
decoded = layers.Conv2D(3, (3, 3), activation='sigmoid', padding='same')(x)
我正在使用 ImageDataGenerator。谁能告诉我我做错了什么?为什么图像没有被重新创建?
请帮忙。谢谢你。
解决方案
推荐阅读
- python - 如何将函数输出添加到文本文件中?
- c - 为什么我的程序不能正确地将十进制转换为二进制打印?
- jquery - 出现错误:“无法读取未定义的属性 'toLowerCase'”在 filter() 函数中使用 Jquery find()
- sql - 需要在 ssis 中使用从其他查询返回 5 个随机行结果的查询
- python - 如何根据可变数量显示和保存django表单的多个实例?
- scala - 为什么scala枚举不从其他枚举中选择值作为其值?
- xml - 如何使用 ORACLE 解析 XML 中的属性值
- azure-application-insights - APIM 在 Azure Application Insights 中屏蔽 PII 数据
- angular - Angular 将数据标签属性添加到 td 元素
- html - iOS13 WKWebView透明背景