pytorch中的前項計算和反向傳播

2021-10-03 01:15:08 字數 1881 閱讀 2174

前項計算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在...