深度学习框架武林盟主之争的历历史,大概是这个样子的。15年底之前Caffe是老大哥,随着Tensorflow的诞生,霸占江湖数载,19年起无论从学术界还是工程界PyTorch已经霸占了半壁江山!
一维张量是向量,二维张量是矩阵,张量可以是多维的,张量包含矩阵。
(1)构建一个6x3的未初始化的矩阵
- import torch
- x=torch.empty(6,3)
- x
结果:

(2)创建随机矩阵
- x=torch.rand(5,3)
- x
结果:

(3)初始化零矩阵dtype是long类型
- x=torch.zeros(5,3,dtype=torch.long)
- x
结果;

- x=torch.zeros(5,3,dtype=torch.long)
- x.size()
结果:

- x=torch.randn(4,4)
- y=x.view(16)
- z=x.view(-1,8) #-1代表自动进行计算16/8=2这个意思
- print(x.size(),y.size(),z.size())
结果:

(1)torch转array
- a=torch.ones(5)
- b=a.numpy()
- b
结果:

(2)array转tenor
- import numpy as np
- a=np.ones(5)
- b=torch.from_numpy(a)
- b
结果:

当完成(正向)计算之后, 我们可以调用backward(),PyTorch会自动的把所有的梯度都计算好。与这个tensor相关的梯度都会累加到它的grad属性里。
如果不想计算这个tensor的梯度,我们可以调用detach(),这样它就不会参与梯度的计算了。

- x=torch.rand(1)
- b=torch.rand(1,requires_grad=True)#设置了代表可以求导,不设置代表常量
- w=torch.rand(1,requires_grad=True)
- y=w*x
- z=y+b
- z.backward()
- w.grad
- b.grad
- x
结果:
