【发布时间】:2019-08-08 07:15:45
【问题描述】:
我正在使用 Keras 的内置 inception_resnet_v2 来训练 CNN 来识别图像。在训练模型时,我有一个 numpy 数据数组作为输入,输入形状为 (1000, 299, 299, 3),
model.fit(x=X, y=Y, batch_size=16, ...) # Output shape `Y` is (1000, 6), for 6 classes
起初,在尝试预测时,我传入了一个形状为 (299, 299, 3) 的图像,但得到了错误
ValueError: 检查输入时出错:预期 input_1 有 4 个维度,但得到的数组的形状为 (299, 299, 3)
我重塑了我的输入:
x = np.reshape(x, ((1, 299, 299, 3)))
现在,当我预测时,
y = model.predict(x, batch_size=1, verbose=0)
我没有收到错误消息。
我想确保我在训练和预测中都能正确理解batch_size。我的假设是:
1) 使用model.fit,Keras 从输入数组中获取batch_size 元素(在这种情况下,它一次处理我的 1000 个示例 16 个样本)
2) 使用model.predict,我应该将输入重新整形为单个 3D 数组,并且我应该将 batch_size 显式设置为 1。
这些假设是否正确?
另外,向模型提供训练数据是否会更好(甚至可能),这样就不需要在预测之前进行这种重塑?感谢您帮助我了解这一点。
【问题讨论】:
标签: python tensorflow machine-learning keras conv-neural-network