Keras Reshape似乎没有运行

问题描述 投票:0回答:1

我在keras中有一个简单的卷积自动编码器。我的原始输入是来自csv的平面阵列,所以我想从(196,)到(14,14,1)重塑它们。按照keras文档,我做了:

autoencoder = Sequential()
# first, reshape our (csv) inputs from (196,) to (14,14,1)
autoencoder.add(Reshape((14,14,1), input_shape=(196,)))
# encoding stage
autoencoder.add(Conv2D(16, (3,3), activation='relu', padding='same'))
autoencoder.add(MaxPooling2D((2, 2), padding='same'))
autoencoder.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
autoencoder.add(MaxPooling2D((2, 2), padding='same'))
autoencoder.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
autoencoder.add(MaxPooling2D((2, 2), padding='same'))
# decoding stage
autoencoder.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Conv2D(8, (3, 3), activation='relu', padding='same'))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Conv2D(16, (2, 2), activation='relu'))
autoencoder.add(UpSampling2D((2, 2)))
autoencoder.add(Conv2D(1, (3, 3), activation='sigmoid', padding='same'))

optimizer = optimizers.Adagrad(lr=0.01, epsilon=None, decay=0.001)
autoencoder.compile(optimizer=optimizer, loss='binary_crossentropy')

但是我得到了错误:ValueError: Error when checking target: expected conv2d_35 to have 4 dimensions, but got array with shape (2870, 196) 所以它似乎完全忽略了Reshape。我犯了一些明显的错误吗?

python tensorflow keras reshape
1个回答
1
投票

问题不是输入而是目标,所以你给出的y值不会重新变形。你的网络的最终输出是一个4D张量,你给的是(2870, 196)

仔细检查传递给fit函数的目标数组(y值)。

© www.soinside.com 2019 - 2024. All rights reserved.