前項計算1
import torch
# (3*(x+2)^2)/4
#grad_fn 保留計算的過程
x = torch.ones([2,2],requires_grad=true)
print(x)
y = x+2
print(y)
z = 3*y.pow(2)
print(z)
out = z.mean()
print(out)
#帶有反向傳播屬性的tensor不能直接轉化為numpy格式,需要先進性detach操作
print(x.detach().numpy())
print(x.numpy())
traceback (most recent call last):
file "c:/users/liuxinyu/desktop/pytorch_test/day2/前向計算.py", line 17, in
print(x.numpy())
runtimeerror: can't call numpy() on variable that requires grad. use var.detach().numpy() instead.
tensor([[1., 1.],
[1., 1.]], requires_grad=true)
tensor([[3., 3.],
[3., 3.]], grad_fn=)
tensor([[27., 27.],
[27., 27.]], grad_fn=)
tensor(27., grad_fn=)
[[1. 1.]
[1. 1.]]
前向計算2
import torch
a = torch.randn(2,2)
a = ((a*3)/(a-1))
print(a.requires_grad)
a.requires_grad_(true) #就地修改
print(a.requires_grad)
b = (a*a).sum()
print(b.grad_fn)
with torch.no_grad():
c = (a*a).sum()
print(c.requires_grad)
false
true
false
反向傳播
import torch
# (3*(x+2)^2)/4
#grad_fn 保留計算的過程
x = torch.ones([2,2],requires_grad=true)
print(x)
y = x+2
print(y)
z = 3*y.pow(2)
print(z)
out = z.mean()
print(out)
out.backward()
print(x.grad)
tensor([[1., 1.],
[1., 1.]], requires_grad=true)
tensor([[3., 3.],
[3., 3.]], grad_fn=)
tensor([[27., 27.],
[27., 27.]], grad_fn=)
tensor(27., grad_fn=)
tensor([[4.5000, 4.5000],
[4.5000, 4.5000]])
Pytorch強化練習之手動實現前向和反向傳播
pytorch的兩個核心特徵 1.提供n維張量tensor,類似於numpy,但可以在gpu上執行。2.提供搭建和訓練神經網路時的自動微分 求導機制。本章節我們將使用全連線的relu網路作為執行示例。該網路將有乙個單一的隱藏層,並將使用梯度下降訓練,通過最小化網路輸出和真正 結果的歐幾里得距離,來擬...
Pytorch中的train和eval用法注意點
一般情況,model.train 是在訓練的時候用到,model.eval 是在測試的時候用到 如果模型中沒有類似於 bn這樣的歸一化或者 dropout model.train 和model.eval 可以不要 建議寫一下,比較安全 並且 model.train 和model.eval 得到的效果...
Pytorch 中 torchvision的錯誤
在學習pytorch的時候,使用 torchvision的時候發生了乙個小小的問題 安裝都成功了,並且import torch也沒問題,但是在import torchvision的時候,出現了如下所示的錯誤資訊 dll load failed 找不到指定模組。首先,我們得知道torchvision在...