【发布时间】:2023-12-08 09:21:01
【问题描述】:
我在 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)
所以它似乎完全忽略了重塑。我犯了一些明显的错误吗?
【问题讨论】:
标签: python tensorflow keras reshape