import torch
from torch.autograd import Variable
tensor = torch.FloatTensor([[1, 2], [3, 4]])
variable = Variable(tensor, requires_grad=True)
print(tensor) # tensor([[1., 2.], [3., 4.]])
print(variable) # tensor([[1., 2.], [3., 4.]], requires_grad=True) 梯度设置为True,反向传播要使用
t_out = torch.mean(tensor*tensor) # x^2
v_out = torch.mean(variable*variable)
print(t_out) # tensor(7.5000) 变量计算的时候比张量多了一个梯度信息
print(v_out) # tensor(7.5000, grad_fn=<MeanBackward1>)
v_out.backward() # 反向传播
# v_out = 1/4*sun(var*var) # 求导过程
# d(v_out)/d(var) = 1/4*2*variable = variable/2 # 求导过程
print(variable.grad) # tensor([[0.5000, 1.0000], [1.5000, 2.0000]])
print("variable:", variable) # tensor([[1., 2.], [3., 4.]], requires_grad=True)
print("variable.data:", variable.data) # tensor([[1., 2.], [3., 4.]])
print("variable.data.numpy:", variable.data.numpy()) # [[1. 2.] [3. 4.]]
END
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch 2 variable 变量 - Python技术站