![](/img/trans.png)
[英]Pytorch Validating Model Error: Expected input batch_size (3) to match target batch_size (4)
[英]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.