神经网络的debug
-
先建一个只有一层隐藏层的网络确定一切工作正常
- 在一个数据点上训练,training accuracy应该马上到100%而val accuracy等于随机猜测(overfit),如果不是说明有bug。
- 所有loss要在同一个order上,loss要适合任务(categorial cross-entropy loss :multi-classification problems or focal loss :class imbalance)
- 关注初始的loss,要接近随机猜测的概率。(regularization置于0),比如分类,概率应该等于loss function(1/N),否则可能是因为weights不平衡(initialization很差)或数据集没有normalize
-
- gradient values = 0->learning rate太小或梯度更新的表达式不对
- activations, weights和各层的尺度相符
- Vanishing or exploding gradients
- 可视化网络:ConX或Tensorboard
-
- 要注意regularization是不是远大于data loss,gradients就变成主要从regularization来了
- exploding gradients用gradient clipping
- 注意一起用dropout和batch normalization时的顺序
更多精彩