ConvNet:验证损失没有大幅下降,但准确性正在提高

时间:2016-12-16 01:36:08

标签: tensorflow conv-neural-network multilabel-classification

使用TensorFlow我为分类构建了一个简单的CNN。它有以下定义:

Input Tensor : 32,32,1 Grayscale Image
1 Conv Layer 3x3x32
Relu Activated
2x2 Max Pooled
128 FC1
43 FC2 # 43 classes

可在此notebook on github

上找到完整代码

validation lossaccuracy Epochs 100 1000 2000

epoch 100 validation loss 3.67, validation accuracy 12.05%
epoch 1000 validation loss 3.234, validation accuracy 57.63%
epoch 2750 validation loss 3.111, validation accuracy 69.25%

除非我在某处误解或有错误,否则网络正在学习。然而,验证损失仅略微下降。

这是什么意思?如何使用此信息改进网络?

1 个答案:

答案 0 :(得分:1)

这是TensorFlow中的一个经典错误:您不应在输出上应用softmax然后tf.nn.softmax_cross_entropy_with_logits

操作tf.nn.softmax_cross_entropy_with_logits期望未缩放的logits(即没有softmax)。来自documentation

  

警告:此操作需要未缩放的日志,因为它会在内部执行logmax以提高效率。不要使用softmax的输出调用此op,因为它会产生不正确的结果。