Tensorflow 基于CNN的二值分类器设计
我设计了CNN对图像进行分类,以实现自动质量控制。输入图像为320 x 320像素。我有5个conv层,FC层有512个输出,最后一层只有两个输出:“好”或“坏”。质量控制必须以1.0的精度进行。我用的是tensorflow 我是CNN的初学者,在评估我的模型时遇到了问题。虽然我在训练集上获得了1.0的精度,有时在验证集上也获得了1.0的精度,但我担心成本函数的值。我的模型输出非常大的logit,如果我将这些logit设置为softmax,我总是得到100%的“好”或“坏”概率。因此,如果我的模型正确地预测了这个例子,那么成本(计算为交叉熵)是0。如果所有训练示例都预测正确,则权重不会再发生变化,并且我的模型不会改善验证集的性能 以下是我的模型的示例输出(包含10个示例的批次):Tensorflow 基于CNN的二值分类器设计,tensorflow,conv-neural-network,softmax,Tensorflow,Conv Neural Network,Softmax,我设计了CNN对图像进行分类,以实现自动质量控制。输入图像为320 x 320像素。我有5个conv层,FC层有512个输出,最后一层只有两个输出:“好”或“坏”。质量控制必须以1.0的精度进行。我用的是tensorflow 我是CNN的初学者,在评估我的模型时遇到了问题。虽然我在训练集上获得了1.0的精度,有时在验证集上也获得了1.0的精度,但我担心成本函数的值。我的模型输出非常大的logit,如果我将这些logit设置为softmax,我总是得到100%的“好”或“坏”概率。因此,如果我的模
你认为这里有什么问题?我的CNN对于应用程序来说太复杂了,并且输出100%的概率?我的有线电视新闻网是不是太合适了?你辍学会有帮助吗?这个问题太过合适了。要解决这个问题,有一些想法:
谢谢你的回答。我现在正在使用权重和退出层的正则化,但这并没有解决问题。我还向所有conv层添加了Relu激活。此op将成本增加到几十万,并保持非常高的精度(超过0.99)。问题是否可能是由非常小的数据集(500个示例)引起的?500个示例是小数据集。如果你能收集更多的数据,更大的数据集肯定会减少过度拟合。您是否尝试过增加下降率以查看精度是否下降?是的,我尝试过增加下降率,并且精度略有下降。我的模型的输出逻辑仍然很大,导致分类为1.0或0.0。也许你应该减少网络的容量。减少隐藏的单位数量,或使用较少的图层。也许你应该检查一下是否有。
Logits
[[ 2169.41455078 2981.38574219]
[ 2193.54492188 3068.97509766]
[ 2185.86743164 3060.24047852]
[ 2305.94604492 3198.36083984]
[ 2202.66503906 3136.44726562]
[ 2305.78076172 2976.58081055]
[ 2248.13232422 3130.26123047]
[ 2259.94726562 3132.30200195]
[ 2290.61303711 3098.0871582 ]
[ 2500.9609375 3188.67456055]]
Softmax:
[[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]]
cost calculated with tf.nn.softmax_cross_entropy_with_logits
[ 811.97119141 0. 874.37304688 0. 933.78222656
670.80004883 0. 0. 807.47412109 0. ]