簡體   English   中英

以 0% 的准確率重用 Inception V3 Conv Neural Net (tensorflow)

[英]Reusing Inception V3 Conv Neural Net (tensorflow) with 0% accuracy

EDIT1:我的代碼與這里相同, https://github.com/tensorflow/models/blob/master/inception/inception 唯一的區別是我將我的文件打包到 TFRecords 中,然后分批喂給它。 此外,0 級:1 級的比例為 70:30。

我目前正在開展一個項目,在該項目中我正在使用 inception-V3 CNN 模型來訓練分類器。 目前,我正在研究一個二元分類器(預測 1 或 0),但是,我的模型只預測所有內容的 0 類。 在進行故障排除時,我發現 0 類的預測概率始終為 100%。 我已經驗證了從輸入排隊系統到評估和測試的所有內容,一切似乎也運行良好。

奇怪的是,損失值以完美的半拋物線方式減少,這讓我認為損失已經收斂到局部最小值。 在測試腳本時,每次只生成 0 類(概率為 100%)。 我注意到的另一件事是,各個 Conv 層的激活始終是恆定的,這可能意味着神經元根本沒有發射。

我的問題是, 1. 我的模型是否有效? 損失似乎收斂,但各個層的激活似乎停滯不前。 2. 我正在使用 tensorflow 的模型部分提供的訓練代碼( https://github.com/tensorflow/models/blob/master/inception/inception/inception_train.py

我正在重用 train、eval 和支持代碼,以使用我創建的自定義輸入管道來訓練我的模型(這也有效)。 有人可以幫助指導我正確的方向嗎?

謝謝。

我回答這個問題有點晚了😅

首先,您的模型根本沒有學到任何東西。 它所做的一切(巧妙地😂)就是為所有情況預測類別 0,以便它毫不費力地達到 70% 的基線准確率。 (大概是模特偷懶😪😋)JK。 這是機器學習中一個眾所周知的問題。 這被稱為類不平衡問題。 請參閱此http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

除了那里提到的技術。 一種創造奇跡的技術是使用類權重。 也就是說,基本上告訴網絡偏向於較弱的類別。 在您的情況下,班級權重將為 class0:class1 = 3:7。 這也是一個超參數! 但這是一個很好的起點。

此外,您沒有提供有關數據集大小的任何信息。 無論您是微調還是從頭開始訓練。 沒有它們就很難推測。 默認情況下,我會建議微調。

此外,損失是指訓練損失還是驗證損失? 因為訓練損失實際上沒有關於模型性能的信息。 此外,在我看來,訓練損失和驗證損失都幾乎沒有信息可以得出有關模型性能的有意義的見解。 使用其他指標,如混淆矩陣、f1 分數、召回率、精度等。

最后,你的問題絕對沒有單一的答案。 唯一的方法是艱難的方法-您將與模型一起學習😉。 因為我認為訓練 NN 尤其是 CNN 是一門藝術。 其中,直覺起着非常關鍵的作用,因為在大多數情況下,最意想不到的變化會產生最好的結果。 無論如何,這是訓練神經網絡的有趣部分。

訓練愉快💪

PS:嘗試使用 gradcam 之類的可視化工具來了解模型是否正在查看圖像的正確部分進行分類。 這是非常重要的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM