Python keras的倒数。用于构建自动编码器的展平

Python keras的倒数。用于构建自动编码器的展平,python,keras,autoencoder,Python,Keras,Autoencoder,我的目标是构建一个卷积自动编码器,将输入图像编码为大小为(10,1)的平面向量。我遵循keras的示例,并根据自己的目的对其进行了修改。不幸的是,这种模式: input_img = Input(shape=(28, 28, 1)) x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img) x = MaxPooling2D((2, 2), padding='same')(x) x = Conv2D(8, (3, 3)

我的目标是构建一个卷积自动编码器,将输入图像编码为大小为
(10,1)
的平面向量。我遵循keras的示例,并根据自己的目的对其进行了修改。不幸的是,这种模式:

input_img = Input(shape=(28, 28, 1))

x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Flatten()(x)

encoded = Dense(units = 10, activation = 'relu')(x)


x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation='relu')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

autoencoder = Model(input_img, decoded)
给我

ValueError: Input 0 is incompatible with layer conv2d_39: expected ndim=4, found ndim=2

我想我应该给我的解码器添加一些层来反转展平的效果,但我不确定是哪一层。您能帮忙吗?

为什么要为向量指定特定的(10,1)形状? 然后,您尝试对大小为3x3的内核进行卷积,这并没有真正意义

卷积层的形状有高度、宽度和通道。致密层的输出必须进行整形,这可以通过整形层完成。 然后可以使用单通道将其重塑为例如5x2

encoded = Reshape((5, 2, 1))(encoded)

没有结婚10年。在一维矢量中编码后,只需少量参数。所以,如果编码器的最后一次最大化给了我形状
(无,7,7,8)
,这意味着在展平之后,我会有7*7*8=392的输出形状,对吗?假设我把它连接到我的10个单位。然后,我应该添加另一个密集层(解码器中的第一个层,将我的392输出恢复,并将其重塑为(7,7,8)?