Pytorch backward報(bào)錯(cuò)2次訪問計(jì)算圖需要retain_graph=True的情況詳解
更新時(shí)間:2024年02月20日 09:47:04 作者:培之
這篇文章主要介紹了Pytorch backward報(bào)錯(cuò)2次訪問計(jì)算圖需要retain_graph=True的情況,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
backward報(bào)錯(cuò)2次訪問計(jì)算圖需要 retain_graph=True 的一種情況
錯(cuò)誤代碼
錯(cuò)誤的原因在于
y1 = 0.5*x*2-1.2*x y2 = x**3
沒有放到循環(huán)里面,沒有隨著 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ò)問題解決方案
- 分析PyTorch?Dataloader報(bào)錯(cuò)ValueError:num_samples的另一種可能原因
- pytorch報(bào)錯(cuò)問題:ValueError: num_samples should be a positive integer value, but got num_samples=0
- 解決遇到:PytorchStreamReader failed reading zip archive:failed finding central錯(cuò)誤問題
相關(guān)文章
Python基于pyjnius庫實(shí)現(xiàn)訪問java類
這篇文章主要介紹了Python基于pyjnius庫實(shí)現(xiàn)訪問java類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解)
下面小編就為大家分享一篇python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Win10 GPU運(yùn)算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.
熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,本文主要介紹了Win10 GPU運(yùn)算環(huán)境搭建,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
給Python中的MySQLdb模塊添加超時(shí)功能的教程
這篇文章主要介紹了給Python中的MySQLdb模塊添加超時(shí)功能的教程,timeout功能在服務(wù)器的運(yùn)維當(dāng)中非常有用,需要的朋友可以參考下2015-05-05

