pytorch中變數的可微分性

2021-10-08 05:00:58 字數 671 閱讀 5310

1.變數是可以有梯度的;對於變數,如果其require_grad為true,則表示允許該變數有梯度;如果反向傳播時損失經過計算圖傳導到該變數且該變數的require_grad為true,則可以通過(變數.grad)檢視該變數的梯度;如果反向傳播時損失無法傳導到該變數,則改變量.grad為none;對於require_grad為false的變數,反向傳播時不會對其計算梯度和更新該引數,該引數的grad一直為none,可以當作常量處理

2.加減乘除賦值等各個操作是讓梯度向後傳播,

3.變數a的require_grad為true,b的require_grad為false,令out=a+b,則out不是變數,而是操作,其求梯度函式為』add』,反向傳播時,a有梯度並更新a的引數,b是常量

在神經網路中,可以利用上述方法檢視梯度的反向傳播是否正常

參考總結:這麼一看其實detach()和detach_()很像,兩個的區別就是detach_()是對本身的更改,detach()則是生成了乙個新的variable

比如x -> m -> y中如果對m進行detach(),後面如果反悔想還是對原來的計算圖進行操作還是可以的

但是如果是進行了detach_(),那麼原來的計算圖也發生了變化,就不能反悔了

函式的可重入性

示例 可重入函式 int double int a 不可重入函式 void foo 對於函式中使用的某乙個變數,若兩次呼叫該函式時,這個變數都執行相同的結果,說明該函式是可重入的,否則是不可重入的。從經驗上來講就是 如果函式中使用了全域性變數或者靜態變數,則該函式是不可重入的,否則是可重入的。下面給...

軟體的可復用性

軟體復用就是利用已有的軟體元件來實現或更新新的軟體系統。軟體復用可以大幅度的節省新軟體的開發時間和開發成本。譬如,如果你想造一輛超級跑車,那麼給你法拉利,邁 的圖紙,會不會感覺任務變得更輕鬆了呢。軟體復用讓我們的任務由從0到1簡化成了從1到2,這就是乙個質的飛躍。畢竟我們都知道,改進遠比創造要容易的...

Pytorch 中 torchvision的錯誤

在學習pytorch的時候,使用 torchvision的時候發生了乙個小小的問題 安裝都成功了,並且import torch也沒問題,但是在import torchvision的時候,出現了如下所示的錯誤資訊 dll load failed 找不到指定模組。首先,我們得知道torchvision在...