Pytorch backward報(bào)錯(cuò)2次訪問(wèn)計(jì)算圖需要retain_graph=True的情況詳解
backward報(bào)錯(cuò)2次訪問(wèn)計(jì)算圖需要 retain_graph=True 的一種情況
錯(cuò)誤代碼
錯(cuò)誤的原因在于
y1 = 0.5*x*2-1.2*x y2 = x**3
沒(méi)有放到循環(huán)里面,沒(méi)有隨著 x 的優(yōu)化而相應(yīng)變化。
import torch import numpy as np import torch.optim as optim torch.autograd.set_detect_anomaly(True) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') x = torch.tensor([1.0, 2.0, 3.0,4.5], dtype=torch.float32, requires_grad=True, device=device) y_GT= torch.tensor([10, -20, -30,45], dtype=torch.float32, device=device) print(f'x{x}') optimizer = optim.Adam([x], lr=1) y1 = 0.5*x*2-1.2*x y2 = x**3 for i in range(10): print(f'{i}: x{x}') optimizer.zero_grad() loss = (y1+y2-y_GT).mean() loss.backward() optimizer.step() print(f'{i}: x{x}')
正確代碼
import torch import numpy as np import torch.optim as optim torch.autograd.set_detect_anomaly(True) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') x = torch.tensor([1.0, 2.0, 3.0,4.5], dtype=torch.float32, requires_grad=True, device=device) y_GT= torch.tensor([10, -20, -30,45], dtype=torch.float32, device=device) print(f'x{x}') optimizer = optim.Adam([x], lr=1) for i in range(10): print(f'{i}: x{x}') optimizer.zero_grad() y1 = 0.5*x*2-1.2*x y2 = x**3 loss = (y1+y2-y_GT).mean() loss.backward() optimizer.step() print(f'{i}: x{x}')
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Pytorch?Conda環(huán)境pack打包遷移報(bào)錯(cuò)的處理方案
- PyTorch使用tensorboard的SummaryWriter報(bào)錯(cuò)問(wèn)題解決方案
- 分析PyTorch?Dataloader報(bào)錯(cuò)ValueError:num_samples的另一種可能原因
- pytorch報(bào)錯(cuò)問(wèn)題:ValueError: num_samples should be a positive integer value, but got num_samples=0
- 解決遇到:PytorchStreamReader failed reading zip archive:failed finding central錯(cuò)誤問(wèn)題
相關(guān)文章
在arcgis使用python腳本進(jìn)行字段計(jì)算時(shí)是如何解決中文問(wèn)題的
這篇文章主要介紹了在arcgis使用python腳本進(jìn)行字段計(jì)算時(shí)是如何解決中文問(wèn)題的,需要的朋友可以參考下2015-10-10Python面向?qū)ο笾蓄悾╟lass)的簡(jiǎn)單理解與用法分析
這篇文章主要介紹了Python面向?qū)ο笾蓄悾╟lass)的簡(jiǎn)單理解與用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類(class)的基本概念、原理、定義與使用方法,需要的朋友可以參考下2020-02-02基于Python實(shí)現(xiàn)加強(qiáng)版煙花
這篇文章主要為大家詳細(xì)介紹了如何利用Python制作一個(gè)加強(qiáng)版煙花景,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-02-02python使用celery實(shí)現(xiàn)異步任務(wù)執(zhí)行的例子
今天小編就為大家分享一篇python使用celery實(shí)現(xiàn)異步任務(wù)執(zhí)行的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python學(xué)習(xí)之字典的常用方法總結(jié)
這篇文章主要為大家介紹了Python中字典的幾個(gè)常用方法總結(jié),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python字典有一定幫助,需要的可以參考一下2022-03-03Python命令啟動(dòng)Web服務(wù)器實(shí)例詳解
這篇文章主要介紹了Python命令啟動(dòng)Web服務(wù)器實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能步驟詳解
這篇文章主要介紹了用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03