訓練深度學習網路時候,出現Nan是什麼原因,怎麼才能避免?

時間 2021-05-06 07:33:46

1樓:

今天遇到乙個,遷移學習多分類問題,一開始就是nan,本以為是網路結構出問題了,結果是源域和目標網域名稱稱與實際資料夾名稱沒對上。。。

2樓:

檢查op是否涉及除以0的情況,如計算mean,x/n,發現n為0;sqrt(x),發現x < 0

檢查loss是否遇到邊界值,如loss有log(x),發現 x <= 0

檢查tokenizer,有時候模型沒有問題,問題在寫得不好的tokenizer

3樓:Joyoung

也許,你該檢查一下你的記憶體條和機箱輸入電壓。

記憶體條最好做到,同品牌-同DDRX-同時序-同大小(組成多通道)。

有時候輸入電壓其實很不穩定,大多偏高。如果有條件可以嘗試購買乙個穩壓器或者帶穩壓功能的停電保護。

至少,在我保證了記憶體條統一和電壓穩定後,資料裝載進去後再也沒出現過問題。

4樓:軒空

我遇到幾次。

如果用的是成熟的網路,和資料的關係很大,排查一下資料。

如果是自己構建的網路,就要看看有一些變數是不是設定為可求導的。

5樓:林大

我自己碰到的是adam的引數設定問題,具體參考:

6樓:cometrue ally

1.先定位是訓練前還是訓練後產生的nan

2.如果是訓練前有兩種可能,資料本身就有nan,或者向placeholder傳資料的時候沒有轉成array。

3.如果是訓練後,看看從這裡面找原因:學習率太大,是不是有特徵沒歸一化,求交叉熵的時候訓練結果太逼近0或者1,

4.如果還是找不到就加上bn層,或者加activation前加clip

7樓:印第安老斑鳩

補充乙個,今天遇到的 tf 下的乙個bug

在使用 l2norm, tf.norm的時候, 輸入矩陣有0元素時會出現梯度nan, 其實就是 0.0 / 0.

0, undefined 操作Numerical instability of gradient calculation of tf.norm (nan at 0, inf for small values) · Issue #12071 · tensorflow/tensorflow在使用 l2norm, tf.norm的時候, 輸入矩陣有0元素時會出現梯度nan, 其實就是 0.

0 / 0.0, undefined 操作

Numerical instability of gradient calculation of tf.norm (nan at 0, inf for small values) · Issue #12071 · tensorflow/tensorflow

8樓:

我出現過這種情況,

是因為label有5000維,但是我自己設定的label有4999維訓練不久就會出現Nan的情況,修改一下就好了當然,也許你不會犯我這種錯誤

9樓:Shimmer

對於我的case, 試了所有別的方法後都不管用也是果然在檢測輸入資料的時候發現某幾十萬行那裡發現了一行NAN,所以說第一步先檢測輸入資料裡有沒有NAN,然後再試別的方法。

10樓:KRyan

今天用keras訓練的時候也遇到了loss忽然降為nan的情況,最後發現是有一列特徵太不發散,做了標準化之後基本全為0的緣故,果斷刪掉該列,解決問題。

11樓:哈哈哈

把每個batch的loss 計算方式從 tf.reduce_sum ,改為tf.reduce_mean 然後Nan的情況消失了,不知道為什麼?

12樓:llh

用的是交叉熵cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))的話,最後softmax層輸出y_conv的取值範圍在[0,1]頁就是說允許取0值,有log(0)出現很有可能出現nan啊,cross_entropy = -tf.

reduce_mean(y_*tf.log(tf.clip_by_value(y_conv,1e-15,1.

0)))在tensorflow裡可以限定一下y_conv的取值範圍,別的框架不清楚。

如何學習網路公開課?

公開課的學習,和學霸在學校的學習,以及我個人自學英語的方法都是一樣的。萬變不離其宗,有心,是真的有心真的最好準備的那種 你自己就會發現許多學習方法。到那個時候你自己都能感覺有心和真的最好準備的那種事兩嘛事。另外公開課在現有資源不足的情況下蒐集資料方面甚是麻煩,需要相比在學校多花些時間來整理,列條目。...

新手如何學習網路安全?

推薦題主用時5分鐘閱讀一下這篇文章,學習任何技能,都是乙個全方位配合且有規劃執行的事情,你要有興趣學,有方向學,有好的路線學,又要持之以恆。學習之前先問問自己 為何要學習網路安全?想要達到什麼目標?任曉琿 黑客技術 資訊保安 網路安全從零學起 更新20180925 倪珍香 舉個簡單的例子 以下每個過...

如何初步學習網路安全

學習網路安全,要掌握計算機和網路相關的基礎,所以首先要學習計算機專業導論,入門計算機 然後掌握一門計算機語言,大多計算機語言都是換湯不換藥,學會一門,再學其他的就會很容易 還要學習計算機網路,畢竟網路安全,面對的就是網路 學完這些基礎之後,就可以通過培訓機構,或者安全論壇等途徑去嘗試安全攻防技術了 ...