我正在嘗試使用 Tensorflow 后端在 Keras 中實現 RefineNet。我正在使用來自https://gist.github.com/flyyufelix/65018873f8cb2bbe95f429c474aa1294的 ResNet-101 前端和預訓練權重。模型編譯成功,但在訓練期間不收斂:它總是在 1 到 5 個訓練步驟后收斂到單個類。我嘗試過的東西清單/雖然:輸入數據是one-hot編碼輸入圖像具有正確的對應掩碼損失函數是分類交叉熵預訓練的權重正確,前端正確分類輸入圖像(例如貓)凍結/解凍前端層似乎沒有什么區別不同的優化器(Adam,SGD),不同的學習率(0.01 - 0.000001)網絡甚至不會收斂到/過擬合單個訓練樣本類不平衡:我嘗試使用加權損失,沒有幫助。此外,網絡并不總是收斂到最大的類。檢查網絡圖并將它們與 RefineNet 論文中的架構進行比較??赡苁悄撤N初始化問題,但 Keras 的默認初始化是內核的 glorot_uniform 和偏差的零,想不出比這更好的了。ReLU 可能已經全部消亡,但僅在幾個訓練步驟后就不應該發生這種情況,對嗎?我試過 LeakyRelU,沒有幫助。嘗試了不同的輸入大小、批量大小、隨機裁剪、縱橫比(此時有點絕望)。嘗試輸入隨機噪聲,行為相同。最后一點讓我認為架構只是無視輸入,但我不知道在哪里,如何以及為什么。訓練期間的示例輸出:Training:Step 0, loss 15.566238403320312, acc 0.012790679931640625Step 1, loss 9.91278076171875, acc 0.36734771728515625Step 2, loss 10.994621276855469, acc 0.27989959716796875Step 3, loss 10.00101375579834, acc 0.3611602783203125Step 4, loss 11.439224243164062, acc 0.2010345458984375Step 5, loss 11.397968292236328, acc 0.229278564453125Step 6, loss 9.844161987304688, acc 0.3711433410644531Step 7, loss 9.981706619262695, acc 0.36286163330078125Step 8, loss 11.335559844970703, acc 0.21475982666015625Step 9, loss 9.997631072998047, acc 0.3608970642089844...完整代碼可以在以下 Google Colab notebook 中找到:https ://colab.research.google.com/drive/1OlujuKZYhRaTm9h7rHAPEi9gkiYmQLR_我已嘗試盡可能輕松地重現該問題。任何幫助/想法將不勝感激!
添加回答
舉報
0/150
提交
取消