自动编码器:层 "model_3" 需要 1 个输入,但它收到了 64 个输入张量

Autoencoder: Layer "model_3" expects 1 input(s), but it received 64 input tensors

我有两批长度为 64。每个索引都是一个大小为 (128, 128, 3) 的 ndarray。

我的代码:

ae_encoder = Conv2D(32, (2,2), padding='same')(input)
ae_encoder = LeakyReLU()(ae_encoder)
ae_encoder = Flatten()(ae_encoder)
ae_encoder_output = Dense(Z_DIM, activation='relu')(ae_encoder) 

我似乎无法找到为什么它将整批大小为 64) 的产品视为不同的渠道。它不应该在这些批次中迭代 ndarray 吗?

错误:

ValueError: Layer "model_3" expects 1 input(s), but it received 64 input tensors.

Update-1 x_train 和 y_train 都是长度为 64 的列表,每个索引的形状为 (128, 128, 3)。

示例输入(输入很大所以不能完全复制)

如果您正在尝试实现普通自动编码器,其中输入形状应等于输出形状,那么您必须将最后一个解码器层更改为:

ae_decoder_output = tf.keras.layers.Conv2D(3, (3,3), activation='sigmoid', padding='same',strides=(1,1))(ae_decoder)

导致输出形状 (None, 128, 128, 3)。此外,您需要确保您的数据具有 (samples, 128, 128, 3).

的形状