tensorflow多线程预测(tensorflow周易)
这是学生在问答中提到的一个问题;今晚一组。
问题是模型在训练中表现良好,然后在测试数据中表现不佳,与预期相差甚远。
这是张量流的BN层带来的问题。对于BN层,在训练过程中,对每批的训练数据进行归一化,即使用每批数据的均值和方差。
但是,在测试时,例如预测样本,没有批处理的概念。因此,此时使用的均值和方差是总训练数据的均值和方差,可以通过移动平均法得到。
如果待预测图像的分布与训练图像的分布之间存在较大差异,则直接使用训练数据的均值和方差可能导致预测结果的准确性较差。
解决方法相对简单。如果你有大量的数据需要预测,只需要调用模型(测试)进行预测。这样,您就可以使用训练模式从要预测的数据中直接计算相应的均值和方差。
如果单个数据或数据分布差异不大,则需要保存BN层的参数,尤其是移动均值和方差,然后直接进行预测(model.predict)。
问与答。日月光华课程的一篇