【发布时间】:2021-10-17 23:50:29
【问题描述】:
代码有点长,所以我请求你在这个Google Colab链接上查看它。
我正在构建一个自动编码器。一开始我工作得很好,但是在添加了一个 CNN 层之后,我的意思是在将这个 layer_filters = [32, 64] 更改为 layer_filters = [32, 64, 128] 之后,我遇到了尺寸错误。
这个:
ValueError: Dimensions must be equal, but are 32 and 28 for '{{node mean_squared_error/SquaredDifference}} = SquaredDifference[T=DT_FLOAT](autoencoders/decoder/decoder_output/Sigmoid, IteratorGetNext:1)' with input shapes: [32,32,32,1], [32,28,28,1].
我认为编码器的尺寸和解码器的尺寸是不同的,因为增加了一层。我不知道如何使它们相同。有人可以帮忙吗?
编辑 - @Kaveh 在下面回答了这个问题,我照他说的做了,而且效果很好。所以如果有人现在正在访问这个问题。请注意,我之前提到的笔记本已经更新,没有任何追溯。
【问题讨论】:
-
请更新完整的错误跟踪。
-
编码器输入维度为
(None, 28, 28, 1),解码器输出维度为(None, 32, 32, 1)。您正在通过autoencoder.fit()向他们俩发送X_train。X_test也一样。因此,这意味着X_train和X_test的维度为(None, 32, 32, 1),与编码器输入维度(None, 28, 28, 1)不兼容。 TL;DR:由于编码器输入和解码器输出两端都获得相同的输入,它们的尺寸应该相同。
标签: tensorflow machine-learning deep-learning autoencoder