自动编码器:层 "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)
.
的形状
我有两批长度为 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)
.