我正在訓練卷積神經網絡(CNN)和我遇到的MNIST在訓練和驗證準確性顯著下跌X迭代後: 培訓和驗證準確度突然下降卷積神經網絡(CNN)
是X似乎取決於學習速度。修改輟學似乎沒有對這種現象有任何影響。我用較低的報告做了測試(每100個批次報告一次),並注意到下降速度非常快。降落後精度不會恢復。
training_accuracy/validation_accuracy => 1.0000/1.0000 for step 10000
training_accuracy/validation_accuracy => 0.9833/1.0000 for step 20000
training_accuracy/validation_accuracy => 1.0000/1.0000 for step 30000
training_accuracy/validation_accuracy => 1.0000/1.0000 for step 40000
training_accuracy/validation_accuracy => 1.0000/1.0000 for step 50000
training_accuracy/validation_accuracy => 0.1000/0.1000 for step 60000
training_accuracy/validation_accuracy => 0.1000/0.1000 for step 69999
我的CNN是典型的CNN,從0開始訓練。代碼可用here。數據集是標準MNIST數據集,有兩個卡口:
- 我隨機噪聲添加到圖像以非常低的值
- 我隨意移動影像留下幾個像素,右
那不是過學習,因爲訓練準確度也會下降。
我注意到所有的預測都是0
之後的下降。所以準確度是1/10 = 0.1
(因爲CNN預測總是爲0)
你知道那是什麼現象嗎?我感謝你的想法和反饋。
更新1: 我注意到,所有的TF重量和偏見都充滿了楠:
2017-06-10 13:06:34.814975: I tensorflow/core/kernels/logging_ops.cc:79] This is W_fc1: [[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan]...] 2017-06-10 13:06:34.830064: I tensorflow/core/kernels/logging_ops.cc:79] This is b_fc1: [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan...] 2017-06-10 13:06:34.840501: I tensorflow/core/kernels/logging_ops.cc:79] This is W_fc2: [[nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan][nan nan nan nan nan nan nan nan nan nan]...] 2017-06-10 13:06:34.851325: I tensorflow/core/kernels/logging_ops.cc:79] This is b_fc2: [nan nan nan nan nan nan nan nan nan nan]
NaNs意味着損失爆炸,你的學習速度可能太高。 –
我不認爲這個損失爆炸。它慢慢地變爲0.或者我誤解了你? – Tigran
我添加了常量來記錄函數,可能會幫助:'tf.log(y + small_constant)'。 – Tigran