基于CNN

时间:2017-06-23 08:55:47

标签: tensorflow conv-neural-network softmax

我设计了CNN来对图像进行分类,以实现自动质量控制。输入图像为320 x 320像素。我有5个转换层,FC层有512个输出,最后一层只有两个输出:'好'或'坏'。质量控制必须以1.0精度完成。我正在使用tensorflow。

我是CNN的初学者,我在评估模型时遇到了问题。虽然我在训练集上有时获得1.0准确度,有时候在验证集上也有,但我担心成本函数的值。我的模型输出非常大的logits,如果我softmax这些logits我总是100%概率'好'或'坏'。因此,如果我的模型正确预测了该示例,则成本(计算为cross_entropy_with_logits)为0.如果正确预测了所有训练示例,则权重不再更改,并且我的模型不会提高验证集的性能。

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

  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.        ]

您认为这里的问题是什么?我的CNN对于应用程序而言太复杂并且输出100%的概率?我的CNN简直过度拟合?你辍学会有帮助吗?

1 个答案:

答案 0 :(得分:1)

问题是过度拟合。要解决这个问题,有一些想法:

  1. 增加训练数据集,收集更多数据或根据现有数据集生成变换后的图像。
  2. 涉及正则化,L1 / L2正则化,批量规范,退出将有所帮助。
  3. 考虑使用预先训练的模型,即所谓的Transfer Learning,请参阅this tutorial