Tensorflow 基于CNN的二值分类器设计

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对图像进行分类,以实现自动质量控制。输入图像为320 x 320像素。我有5个conv层,FC层有512个输出,最后一层只有两个输出:“好”或“坏”。质量控制必须以1.0的精度进行。我用的是tensorflow

我是CNN的初学者,在评估我的模型时遇到了问题。虽然我在训练集上获得了1.0的精度,有时在验证集上也获得了1.0的精度,但我担心成本函数的值。我的模型输出非常大的logit,如果我将这些logit设置为softmax,我总是得到100%的“好”或“坏”概率。因此,如果我的模型正确地预测了这个例子,那么成本(计算为交叉熵)是0。如果所有训练示例都预测正确,则权重不会再发生变化,并且我的模型不会改善验证集的性能

以下是我的模型的示例输出(包含10个示例的批次):


你认为这里有什么问题?我的CNN对于应用程序来说太复杂了,并且输出100%的概率?我的有线电视新闻网是不是太合适了?你辍学会有帮助吗?

这个问题太过合适了。要解决这个问题,有一些想法:

  • 增加训练数据集,收集更多数据或基于现有数据集生成变换图像
  • 涉及正则化、L1/L2正则化、批处理规范、辍学将有所帮助
  • 考虑使用预先训练的模型,即所谓的,请参阅

  • 谢谢你的回答。我现在正在使用权重和退出层的正则化,但这并没有解决问题。我还向所有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.        ]