move files
This commit is contained in:
57
tutorial-contents/202_variable.py
Normal file
57
tutorial-contents/202_variable.py
Normal file
@ -0,0 +1,57 @@
|
||||
"""
|
||||
Know more, visit 莫烦Python: https://morvanzhou.github.io/tutorials/
|
||||
My Youtube Channel: https://www.youtube.com/user/MorvanZhou
|
||||
|
||||
Dependencies:
|
||||
torch: 0.1.11
|
||||
"""
|
||||
import torch
|
||||
from torch.autograd import Variable
|
||||
|
||||
# Variable in torch is to build a computational graph,
|
||||
# but this graph is dynamic compared with a static graph in Tensorflow or Theano.
|
||||
# So torch does not have placeholder, torch can just pass variable to the computational graph.
|
||||
|
||||
tensor = torch.FloatTensor([[1,2],[3,4]]) # build a tensor
|
||||
variable = Variable(tensor, requires_grad=True) # build a variable, usually for compute gradients
|
||||
|
||||
print(tensor) # [torch.FloatTensor of size 2x2]
|
||||
print(variable) # [torch.FloatTensor of size 2x2]
|
||||
|
||||
# till now the tensor and variable seem the same.
|
||||
# However, the variable is a part of the graph, it's a part of the auto-gradient.
|
||||
|
||||
t_out = torch.mean(tensor*tensor) # x^2
|
||||
v_out = torch.mean(variable*variable) # x^2
|
||||
print(t_out)
|
||||
print(v_out) # 7.5
|
||||
|
||||
v_out.backward() # backpropagation from v_out
|
||||
# v_out = 1/4 * sum(variable*variable)
|
||||
# the gradients w.r.t the variable, d(v_out)/d(variable) = 1/4*2*variable = variable/2
|
||||
print(variable.grad)
|
||||
'''
|
||||
0.5000 1.0000
|
||||
1.5000 2.0000
|
||||
'''
|
||||
|
||||
print(variable) # this is data in variable format
|
||||
"""
|
||||
Variable containing:
|
||||
1 2
|
||||
3 4
|
||||
[torch.FloatTensor of size 2x2]
|
||||
"""
|
||||
|
||||
print(variable.data) # this is data in tensor format
|
||||
"""
|
||||
1 2
|
||||
3 4
|
||||
[torch.FloatTensor of size 2x2]
|
||||
"""
|
||||
|
||||
print(variable.data.numpy()) # numpy format
|
||||
"""
|
||||
[[ 1. 2.]
|
||||
[ 3. 4.]]
|
||||
"""
|
||||
Reference in New Issue
Block a user