【发布时间】:2018-12-23 22:48:54
【问题描述】:
现在我在 tensorflow 中遇到了一个问题: 我有一个由 6 个卷积层组成的网络(每个卷积层都进行批量归一化,最后一个卷积之后是平均池化以使输出形状为 Nx1x1xC),旨在将一张图像分类为一个类别。训练期间一切正常: - 训练样本约为 150000 - 训练期间的验证样本约为 12000
我已经训练了总共 50000 次迭代,小批量大小为 6。 - 在训练期间,训练损失总是越来越低(从开始时的大约 2.6 到迭代 50000 时的大约 0.3), - 并且在大约 40000 次迭代后验证准确率越来越高并达到饱和(从开始时的 60% 到迭代 50000 时的 72%)
但是,当我在相同的验证样本上使用迭代 50000 的学习权重进行测试时,总体准确度仅为 40% 左右。如果有人遇到类似问题,我已经用谷歌搜索了。有人说批量标准化中移动平均线的衰减可能是原因。
tf.contrib.layers.batch_norm 中的默认衰减为 0.999。然后我用 0.9、0.99、0.999 的衰减进行了训练。测试过程中验证样本的OA结果分别为70%、30%、39%。虽然 0.9 的衰减效果最好,但在训练期间的验证上仍然低于 OA。
我写信是想问是否有人有类似的问题,你知道可能是什么原因吗?
祝你好运,
【问题讨论】:
-
我的猜测是,由于某种原因,您正在执行的两个图表不同。可能导致差异的还有 dropout:您在训练评估期间是否使用了 dropout?尝试找到两个预测不同的示例,并深入挖掘以了解发生了什么。激活是一样的吗?
-
我检查过的两张图是一样的,我不使用dropout。仍然非常感谢您的建议!
标签: python tensorflow machine-learning