【发布时间】:2019-06-25 13:46:24
【问题描述】:
我正在尝试构建 CNN 自动编码器。每个训练图像(颜色)的大小为 200*200。编译时出现错误:ValueError: Error when checking target: expected activation_7 to have shape (154, 154, 1) but got array with shape (200, 200, 3) 使用以下代码。如何修改代码才能工作?
autoencoder = Sequential()
autoencoder.add(Conv2D(64, (3, 3), input_shape=(200, 200, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(MaxPooling2D(pool_size=(2, 2)))
autoencoder.add(Conv2D(32, (3, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(MaxPooling2D(pool_size=(2, 2)))
autoencoder.add(Conv2D(32, (3, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(MaxPooling2D(pool_size=(2, 2))) # encoded
autoencoder.add(Conv2D(32, (3, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(UpSampling2D((2,2)))
autoencoder.add(Conv2D(32, (3, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(UpSampling2D((2,2)))
autoencoder.add(Conv2D(64, (3, 3)))
autoencoder.add(Activation('relu'))
autoencoder.add(UpSampling2D((2,2)))
autoencoder.add(Conv2D(1, (3, 3)))
autoencoder.add(Activation('sigmoid'))
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
【问题讨论】:
-
这个错误什么时候出现?网络编译得很好。你能提供输入和输出的大小吗?你怎么训练它?你有没有看到你的目标与输入的形状不同?
-
我想用一组尺寸为 200*200 的彩色图像进行训练,并想预测相同尺寸的彩色图像。我也不知道在上面的代码中输入的形状是如何从上到下流动的。
-
在代码末尾(或者在jupyter之后)添加autoencoder.summary(),你会看到每一层之后的大小,你可能想检查一下。
标签: python machine-learning keras neural-network conv-neural-network