聽說你的模型損失是NaN

2022-03-05 10:42:56 字數 528 閱讀 3820

有時候,模型跑著跑著,損失就莫名變nan了。不過,經驗告訴我們,大部分nan主要是因為除數是0或者傳給log的數值不大於0。下面說說是log出nan的幾種常見解決方法。

畢竟, 計算機的是無法表示所有實數的,儘管有些函式得出的結果只能無限近似0,但是由於計算機精度問題,最後的結果往往被表示為0。比如sigmoid函式,取值在0到1之間。

下面介紹tensorflow的解決log出nan的常見方法:

方法1:在保證傳給log的數值不會有負數的情況下,可以直接加乙個比較小的常數

tf.log(x + 1e-10)
這種方法不是很推薦,因為有時候需要log的輸出作為別的輸入。

方法2:利用clip,或者maximum

tf.log(tf.maximum(x, 1e-15))

tf.log(tf.clip_by_value(x, 1e-15, np.inf))

tf.nn.log_softmax(x)

聽說你是參加智慧型車比賽的?

問 我想問問,你們參加智慧型車競賽同學都是學什麼專業的?答 什麼專業都有,但基本上都和 自動化 有關係。像什麼電氣自動化 機械自動化 化工自動化 儀器儀表自動化 設計自動化。說白了,你只要是使用過word,做過ppt都算是學過辦公自動化。問 看來學自動化挺吃香的?答 那可不。你沒有聽說過,學了自動化...

聽說你的需求做不完

需求太多,是程式設計師們共同面對的困局。從前端到後端 從資料到分析 從互動到測試,幾乎每個人都很忙。大公司的用人標準,早期有乙個很常見的說法,叫作 三個程式設計師,拿四個人的工資,做五個人的事情 在行業高速發展期,給更多的錢,確實非常吸引人。但後來,行業發展不像早期那麼快速,內捲的趨勢隱隱然在加劇,...

NaN是什麼?怎麼可靠的測試乙個值是NaN

nan全稱是not a number 不是乙個數字 我們可以通過number.nan來獲得乙個nan,在型別轉換失敗時,我們常常會得到乙個nan,需要注意的是,nan是js中唯一乙個自身不相等的存在。number.nan nan nan nan false那為什麼nan nan?nan 只是numb...