婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pytorch 梯度NAN異常值的解決方案

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

熱門標簽:聊城語音外呼系統 海外網吧地圖標注注冊 騰訊地圖標注沒法顯示 地圖標注自己和別人標注區別 南陽打電話機器人 ai電銷機器人的優勢 打電話機器人營銷 商家地圖標注海報 孝感營銷電話機器人效果怎么樣

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數值

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

下面基于torch BIF函數實現替換這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.]])

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

您可能感興趣的文章:
  • PyTorch梯度裁剪避免訓練loss nan的操作
  • Pytorch訓練過程出現nan的解決方式
  • pytorch 權重weight 與 梯度grad 可視化操作
  • PyTorch 如何檢查模型梯度是否可導
  • 淺談pytorch中為什么要用 zero_grad() 將梯度清零
  • PyTorch 如何自動計算梯度

標簽:六盤水 撫州 南寧 揚州 聊城 楊凌 牡丹江 迪慶

巨人網絡通訊聲明:本文標題《pytorch 梯度NAN異常值的解決方案》,本文關鍵詞  pytorch,梯度,NAN,異常,值,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 梯度NAN異常值的解決方案》相關的同類信息!
  • 本頁收集關于pytorch 梯度NAN異常值的解決方案的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 曲沃县| 海兴县| 天气| 新晃| 东兰县| 博乐市| 本溪市| 阆中市| 行唐县| 鄂托克前旗| 自治县| 滕州市| 随州市| 青田县| 闸北区| 河源市| 波密县| 东莞市| 海兴县| 东兴市| 新巴尔虎左旗| 丽水市| 科尔| 黄浦区| 台江县| 时尚| 建瓯市| 丹棱县| 仁寿县| 平凉市| 岗巴县| 偏关县| 伊通| 定结县| 方城县| 万山特区| 漳平市| 武隆县| 修武县| 华亭县| 灌南县|