张量流模型中批处理通道在1个输入正向传递时的用途

时间:2018-06-26 16:16:16

标签: tensorflow keras computer-vision training-data

到目前为止,我已经在TensorFlow(使用Keras)中训练了几个不同的模型,并且我发现正确设置batch_size似乎不仅对训练速度而且对模型的最终准确性都很重要。

让我感到困惑的是,一个模型在输入(和输出)上都有一个实际的批处理通道作为第一维。如果我的批处理大小为32,但是我总是在运行时输入1个数据,那么批处理通道在哪里应用?如果我固有地仅在前向传递中使用1 / batch_size的数量,该如何利用它的绝大部分?

如果您对我正在研究的模型感到好奇,那就是这个模型:

https://github.com/pierluigiferrari/ssd_keras/blob/master/models/keras_ssd300.py 看到:

predictions的输出形状:(批,n_boxes_total,n_classes + 4 + 8)

predictions = Concatenate(axis=2, name='predictions')([mbox_conf_softmax, mbox_loc, mbox_priorbox])

张量遍历了许多其他具有常数的层,并且这些层也已通过[batch_size]进行了预训练。在我看来,各种批次索引的输入将不得不产生不同的结果。也许我只需要指出一些显而易见的东西即可。

1 个答案:

答案 0 :(得分:0)

似乎在训练之后,您必须重新编译批处理大小为1的模型,然后将权重从训练模型转移到新模型进行评估。另一种选择是一次执行预测的“ batch_size”计数(当然,对于每个应用程序并不总是可行的)。如果有其他选择(或者我看错了),请随时添加答案。