Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在tensorflow中,训练和测试显示了不同的结果_Python_Tensorflow_Machine Learning - Fatal编程技术网

Python 在tensorflow中,训练和测试显示了不同的结果

Python 在tensorflow中,训练和测试显示了不同的结果,python,tensorflow,machine-learning,Python,Tensorflow,Machine Learning,现在我在tensorflow中面临一个问题: 我有一个由6个卷积层组成的网络,每个卷积层都带有批量标准化,最后一个卷积层后面是一个平均池,以生成输出形状Nx1x1xC,目的是将一幅图像分类为一个类别。训练期间一切正常: -培训样本约15万份 -培训期间的验证样本约为12000个 我总共训练了50000次迭代,最小批量为6次。 -在训练过程中,训练损失总是从开始时的2.6左右降低到迭代50000时的0.3左右, -在大约40000次迭代之后,验证精度变得更高和饱和,从开始时的60%到50000次迭

现在我在tensorflow中面临一个问题: 我有一个由6个卷积层组成的网络,每个卷积层都带有批量标准化,最后一个卷积层后面是一个平均池,以生成输出形状Nx1x1xC,目的是将一幅图像分类为一个类别。训练期间一切正常: -培训样本约15万份 -培训期间的验证样本约为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

我写信是想问是否有人有类似的问题,你知道原因是什么吗


最美好的祝愿,

我有两个建议:

如果您没有使用bool-isTraining并将其传递给批处理规范化层,请这样做!这应该是一个占位符,并在培训中的每个会话之前设置,它将设置为true,在测试/验证中设置为false。 检查在测试/验证期间,您是否没有对tet/验证数据集进行无序化处理,在数据批的某些导入/管理中可能存在某种类型的无序化=True。 第一个是关键,第二个不应该有太大的区别,但它确保每次都有精确的数值。
我的猜测是,由于某种原因,您正在执行的两个图是不同的。导致差异的另一个原因是辍学:你们在培训评估中使用辍学吗?试着找出一个两种预测不同的例子,并深入挖掘,看看到底发生了什么。激活是否相同?我检查的两个图是相同的,我不使用dropout。还是非常感谢你的建议!第2点:测试/验证期间的数据集未被洗牌