Keras Reshape似乎没有运行

时间:2018-08-07 17:40:19

标签: python tensorflow keras reshape

我在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。我在犯一些明显的错误吗?

1 个答案:

答案 0 :(得分:1)

问题不在于输入,而在于 target ,因此您提供的y值不会被重塑。网络的最终输出是一个4D张量,您可以在其中给出(2870, 196)

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