使用TensorFlow
我为分类构建了一个简单的CNN
。它有以下定义:
Input Tensor : 32,32,1 Grayscale Image
1 Conv Layer 3x3x32
Relu Activated
2x2 Max Pooled
128 FC1
43 FC2 # 43 classes
上找到完整代码
validation loss
和accuracy
Epochs
100 , 1000 , 2000 { p>
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%
除非我在某处误解或有错误,否则网络正在学习。然而,验证损失仅略微下降。
这是什么意思?如何使用此信息改进网络?
答案 0 :(得分:1)
这是TensorFlow中的一个经典错误:您不应在输出上应用softmax然后tf.nn.softmax_cross_entropy_with_logits
。
操作tf.nn.softmax_cross_entropy_with_logits
期望未缩放的logits(即没有softmax)。来自documentation:
警告:此操作需要未缩放的日志,因为它会在内部执行logmax以提高效率。不要使用softmax的输出调用此op,因为它会产生不正确的结果。