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

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

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

pytorch 梯度NAN異常值

gradient 為nan可能原因:

1、梯度爆炸

2、學習率太大

3、數據本身有問題

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

定位造成nan的代碼:

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

pytorch處理inf和nan數值

在構建網絡框架后,運行代碼,發(fā)現(xiàn)很多tensor出現(xiàn)了inf值或者nan,在很多博客上沒有找到對應的解決方法,大部分是基于numpy寫的,比較麻煩。

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

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.]])

簡單回顧

tips:對于某些tensor,可能已經開啟了grad功能,需要把它先轉為普通tensor(使用.data)

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

第一個是判斷條件,

第二個是符合條件的設置值,

第三個是不符合條件的設置值

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 用Python爬取指定關鍵詞的微博

    用Python爬取指定關鍵詞的微博

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

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

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

    python如何使用jt400.jar包代碼實例

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

    Python數據分析matplotlib折線圖案例處理

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

    解決PySide+Python子線程更新UI線程的問題

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

    python中opencv?Canny邊緣檢測

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

    ython字符串處理實用技巧分享

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

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

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

    Pandas實現(xiàn)數據類型轉換的一些小技巧匯總

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

    淺談python內置函數callable的用法

    這篇文章主要介紹了淺談python內置函數callable的用法, callable函數可用于判斷一個對象是否可以被調用,若對象可以被調用則返回True,反之則返回False,需要的朋友可以參考下
    2023-04-04

最新評論