首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从密集层输出构造图像

从密集层输出构造图像
EN

Data Science用户
提问于 2020-02-28 22:22:15
回答 1查看 596关注 0票数 1

我试图从稠密层重建一幅图像,这是1)卷积网络输出与图像输入的级联;2)稠密层具有数值输入。

级联的一维张量被馈送到一个密集的层,我需要重建成一幅图像。

我现在使用的代码是这样的:

代码语言:javascript
复制
merge_output = tf.keras.layers.concatenate([convolutional_model_output, numerical_model_output])
densem1 = Dense(8092, activation='relu')(merge_output)
#densem2 = Dense(512, activation='relu')(densem1)
densem2 = Dense(self.image_width*self.image_height*3, activation='relu')(densem1)
reshapem1 = Reshape(target_shape=(self.image_height, self.image_width, 3))(densem2)

convm1 = Conv2D(filters=32, kernel_size=3, padding="same" , activation='relu')(reshapem1)
convm2 = Conv2D(filters=3, kernel_size=3, padding="same" , activation='relu')(convm1)

然而,训练不能收敛到真正的输出,看上去就像奇怪颜色的万花筒。

我的方法有什么问题吗?我确实意识到,将卷积和数值特征连在一起,并将它们重新塑造成图像可能是一个可能的痛点,是否有更好的方法来表示这一层或特定的问题?

提前谢谢。

EN

回答 1

Data Science用户

发布于 2020-02-29 21:34:39

控制这两个输出层并不像您想象的那样痛苦。首先,有许多事情可能会导致模型出错。让我们一个接一个地看看:

1)如果损失曲线不稳定或不被覆盖,可在中间稠密层中使用批数范数。因为有很多密集的层,它可能导致过度拟合以及所以尝试使用辍学。实验批次规范和辍学,以及一起看看哪一个有帮助。

2)检查解码器网络的输入和输出范围:将数据标准化为0和1,只需将RGB值乘以255。如果输出图像与输入图像相同,则使用此规范化值作为真正的目标值,或者使用规范化目标图像作为目标输出。类似地,要获得0到1之间的输出值,只需将输出从relu剪辑到1,并将其存储在浮点变量中作为其分数。使用这个浮动变量来计算损失。将它与255相乘,并将其存储在整数变量中以便于可视化。

如果这些方法不起作用,您可能想看看其他的重采样方法,例如:反褶积层和PixelShu显层。您可能还会看到生成模型的解码器,比如GANs,特别是CGAN (条件GAN),它可以将图像中的信息与已知的先验信息进行类似的合并。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/68899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档