繁体   English   中英

预期批量大小与 model output 批量大小不匹配

[英]Mismatch between expected batch size and model output batch size

keras 功能 API 是否强制模型 output 中的批次元素数量等于其输入中的元素数量? 例如,下面的代码会引发异常: ValueError: Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (2, 1) ValueError: Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (2, 1)

d = 2
input_ = Input(shape=(d, ))
output_ = keras.layers.Lambda(lambda x: tf.reduce_sum(x, keepdims=True))(input_)
model = keras.Model(name='model', inputs=input_, outputs=output_)

如果我将keepdims设置为 false,则会引发另一个异常: ValueError: zero-dimensional arrays cannot be concatenated ,这是有道理的,因为 model 需要一批元素,每个元素都是一个二维数组。

Tensorflow Keras functional API不一定强制 model output 中的批处理元素数等于其输入中的元素数。
Tensorflow 通过将 Output 形状的索引 0保留为None来处理此问题,因为它与batch_size 无关

但是在这种情况下,当打印model.summary()时,您可以观察到最后一层 output 形状固定为(1,1)而不是(None,1) 如果您向它提供batch_size = 1的数据,它将正常工作,但当提供的数据具有batch_size != 1时会引发错误

更具体地说: Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (BATCH_SIZE, 1) Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (BATCH_SIZE, 1)

预期的 output 形状(BATCH_SIZE,1)数据的 output 形状。
Output 形状(1, 1)是 model 的output形状。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM