# -*- coding: utf-8 -*-
# @Time : 2018/1/17 18:36
# @Author : Zhiwei Zhong
# @Site : Variable 和 tensor 的区别
# @File : Variable.py
# @Software: PyCharm
import torch
from torch.autograd import Variable # 变量
tensor = torch.FloatTensor([[1, 2], [3, 4]])
variable = Variable(tensor, requires_grad=True) # 要不要涉及到反向传播中
# tensor不可以反向传播,varible可以反向传播
t_out = torch.mean(tensor * tensor)
v_out = torch.mean(variable * variable)
print(t_out, v_out)
"""
7.5
Variable containing:
7.5000
[torch.FloatTensor of size 1
"""
# v_out = 1/4 * sum(var * var)
# d(v_out) = variable/2
v_out.backward() # 反向传播
print(variable.grad)
print(variable.data)
print(variable.data.numpy()) # variable 转为 numpy