欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch 梯度NAN異常值的解決方案

 更新時(shí)間:2021年06月05日 14:13:05   作者:sini2018  
這篇文章主要介紹了pytorch 梯度NAN異常值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

pytorch 梯度NAN異常值

gradient 為nan可能原因:

1、梯度爆炸

2、學(xué)習(xí)率太大

3、數(shù)據(jù)本身有問(wèn)題

4、backward時(shí),某些方法造成0在分母上, 如:使用方法sqrt()

定位造成nan的代碼:

import torch
# 異常檢測(cè)開(kāi)啟
torch.autograd.set_detect_anomaly(True)
# 反向傳播時(shí)檢測(cè)是否有異常值,定位code
with torch.autograd.detect_anomaly():
 loss.backward()

pytorch處理inf和nan數(shù)值

在構(gòu)建網(wǎng)絡(luò)框架后,運(yùn)行代碼,發(fā)現(xiàn)很多tensor出現(xiàn)了inf值或者nan,在很多博客上沒(méi)有找到對(duì)應(yīng)的解決方法,大部分是基于numpy寫(xiě)的,比較麻煩。

下面基于torch BIF函數(shù)實(shí)現(xiàn)替換這2個(gè)值。

a = torch.Tensor([[1, 2, np.nan], [np.inf, np.nan, 4], [3, 4, 5]])
 
a
Out[158]: 
tensor([[1., 2., nan],
        [inf, nan, 4.],
        [3., 4., 5.]])

下面把nan值還為0:

a = torch.where(torch.isnan(a), torch.full_like(a, 0), a)
 
a
Out[160]: 
tensor([[1., 2., 0.],
        [inf, 0., 4.],
        [3., 4., 5.]])

接著把inf替換為1:

a = torch.where(torch.isinf(a), torch.full_like(a, 0), a)
 
a
Out[162]: 
tensor([[1., 2., 0.],
        [0., 0., 4.],
        [3., 4., 5.]])

簡(jiǎn)單回顧

tips:對(duì)于某些tensor,可能已經(jīng)開(kāi)啟了grad功能,需要把它先轉(zhuǎn)為普通tensor(使用.data)

torch.where(condition,T,F) 函數(shù)有三個(gè)輸入值,

第一個(gè)是判斷條件,

第二個(gè)是符合條件的設(shè)置值,

第三個(gè)是不符合條件的設(shè)置值

torch.full_like(input, fill_value, …) 返回與input相同size,單位值為fill_value的矩陣
 
#如下面這個(gè)例子,a為3*3的tensor
b =torch.full_like(a, 0,)
 
b
Out[165]: 
tensor([[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]])

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Python爬取指定關(guān)鍵詞的微博

    用Python爬取指定關(guān)鍵詞的微博

    這篇文章主要介紹了用Python爬取指定關(guān)鍵詞的微博,下面文章圍繞Python爬取指定關(guān)鍵詞的微博的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Windows下使Python2.x版本的解釋器與3.x共存的方法

    Windows下使Python2.x版本的解釋器與3.x共存的方法

    這篇文章主要介紹了Windows下使Python2.x版本的解釋器與3.x共存的方法,命令行中調(diào)用起來(lái)很方便,需要的朋友可以參考下
    2015-10-10
  • python如何使用jt400.jar包代碼實(shí)例

    python如何使用jt400.jar包代碼實(shí)例

    這篇文章主要介紹了python如何使用jt400.jar包代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python數(shù)據(jù)分析matplotlib折線圖案例處理

    Python數(shù)據(jù)分析matplotlib折線圖案例處理

    這篇文章主要介紹了Python數(shù)據(jù)分析matplotlib折線圖案例處理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 解決PySide+Python子線程更新UI線程的問(wèn)題

    解決PySide+Python子線程更新UI線程的問(wèn)題

    今天小編就為大家分享一篇解決PySide+Python子線程更新UI線程的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python中opencv?Canny邊緣檢測(cè)

    python中opencv?Canny邊緣檢測(cè)

    這篇文章主要介紹了python中opencv?Canny邊緣檢測(cè),Canny邊緣檢測(cè)是一種使用多級(jí)邊緣檢測(cè)算法檢測(cè)邊緣的方法。OpenCV提供了函數(shù)cv2.Canny()實(shí)現(xiàn)Canny邊緣檢測(cè)。更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • ython字符串處理實(shí)用技巧分享

    ython字符串處理實(shí)用技巧分享

    在日常編程中,字符串處理是一個(gè)非常常見(jiàn)的任務(wù),因此掌握一些實(shí)用的技巧能夠提高代碼的效率和可讀性,本文將總結(jié)一些 Python 字符串處理的實(shí)用技巧,并通過(guò)代碼實(shí)例進(jìn)行演示,需要的朋友可以參考下
    2024-05-05
  • python IDLE 背景以及字體大小的修改方法

    python IDLE 背景以及字體大小的修改方法

    這篇文章主要介紹了python IDLE 背景以及字體的修改方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Pandas實(shí)現(xiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的一些小技巧匯總

    Pandas實(shí)現(xiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的一些小技巧匯總

    這篇文章主要給大家匯總介紹了關(guān)于Pandas實(shí)現(xiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的一些小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 淺談python內(nèi)置函數(shù)callable的用法

    淺談python內(nèi)置函數(shù)callable的用法

    這篇文章主要介紹了淺談python內(nèi)置函數(shù)callable的用法, callable函數(shù)可用于判斷一個(gè)對(duì)象是否可以被調(diào)用,若對(duì)象可以被調(diào)用則返回True,反之則返回False,需要的朋友可以參考下
    2023-04-04

最新評(píng)論