PyTorch学习(2)—Variable(变量)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_39611196/article/details/82345396

神经网络里面的参数都是变量(variable)的形式。

Tensor和Variable在反向传播的时候会出现差别,Tensor不能反向传播,Variable可以反向传播。

Variable containing是指该variable属于搭建图的一部分。

示例代码1:

import torch
from torch.autograd import Variable

tensor = torch.FloatTensor([[1, 2], [3, 4]])
# requires_grad表示需不需要将定义的variable放到反向传播中
variable = Variable(tensor, requires_grad=True)

print(tensor)
print(variable)

运行结果:

1  2
 3  4
[torch.FloatTensor of size 2x2]

Variable containing:
 1  2
 3  4
[torch.FloatTensor of size 2x2]

Tensor和variable的运算,示例代码:

import torch
from torch.autograd import Variable

tensor = torch.FloatTensor([[1, 2], [3, 4]])
# requires_grad表示需不需要将定义的variable放到反向传播中
variable = Variable(tensor, requires_grad=True)

# mean
t_out = torch.mean(tensor * tensor)
v_out = torch.mean(variable * variable)

print(t_out)
print(v_out)

v_out.backward()
# v_out = 1/4 * sum(var * var)
# d(v_out)/d(var) = 1/4 * 2 * variable = variable /2
print(variable.grad)

print(variable.data)

# 将variable转换为numpy不能像Tensor一样使用 tensor。numpy
print(variable.data.numpy())

运行结果:

7.5
Variable containing:
 7.5000
[torch.FloatTensor of size 1]

Variable containing:
 0.5000  1.0000
 1.5000  2.0000
[torch.FloatTensor of size 2x2]


 1  2
 3  4
[torch.FloatTensor of size 2x2]

[[1. 2.]
 [3. 4.]]

 

 

 

 

猜你喜欢

转载自blog.csdn.net/github_39611196/article/details/82345396