pytorch中的Autograd 自動微分

2021-10-03 02:24:16 字數 1311 閱讀 2691

例如:

import torch as t

import numpy as np

from torch.autograd import variable

x=variable(t.ones(2,2),requires_grad=true) #variable對tensor的封裝

print(x)

#輸出tensor([[1., 1.],

[1., 1.]], requires_grad=true)

例如:

x=variable(t.ones(2,2),requires_grad=true)

# print(x)

y=x.sum()

y.backward() #反向傳播,計算梯度

print(x.grad) #得到x的梯度, 注意:grad在反向傳播過程中是可以累積的,

# 所以在反向傳播之前最好先把梯度清零

y.backward() #反向傳播,計算梯度

print('第二次反向傳播計算的梯度:',x.grad)

x.grad.data.zero_() #反向傳播前,梯度置零//或者呼叫 x.grad.zero_()

y.backward()

print('第三次反向傳播計算的梯度:',x.grad)

#輸出tensor([[1., 1.],

[1., 1.]])

第二次反向傳播計算的梯度: tensor([[2., 2.],

[2., 2.]])

第三次反向傳播計算的梯度: tensor([[1., 1.],

[1., 1.]])

例如:

import torch as t

from torch.autograd import variable

x=variable(t.ones(2,3))

y=t.cos(x) #這裡是有乙個將variable切換到tensor的過程

x_tensor_cos=t.cos(x.data) #計算tensor型別的資料

print(y)

print(x_tensor_cos)

#結果tensor([[0.5403, 0.5403, 0.5403],

[0.5403, 0.5403, 0.5403]])

tensor([[0.5403, 0.5403, 0.5403],

[0.5403, 0.5403, 0.5403]])

可以看出,用同樣的算式計算不同型別的資料,結果是一樣的。

Pytorch 中 torchvision的錯誤

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

pytorch中的乘法

總結 按元素相乘用torch.mul,二維矩陣乘法用torch.mm,batch二維矩陣用torch.bmm,batch 廣播用torch.matmul if name main a torch.tensor 1 2,3 b torch.arange 0,12 reshape 4 3 c torch...

pytorch中index select 的用法

a torch.linspace 1,12,steps 12 view 3,4 print a b torch.index select a,0,torch.tensor 0,2 print b print a.index select 0,torch.tensor 0,2 c torch.inde...