在这里首先感谢Datawhale这个平台,真的非常高效率的帮我提升了在pytorch上的重点需要掌握的知识,内容精炼且全是干货,对在职人太友好了!
安利结束,开始学习~
第一章 PyTorch简介和安装
PyTorch是一个很强大的深度学习库,在学术中使用占比很大。
我这里是Mac系统的安装,相比起教程中的win/linux安装感觉还是简单不少(之前就已经安好啦),有需要指导的小伙伴可以评论。
第二章 基础知识
这里划重点!
- 张量的创建/随机初始化
a = torch.tensor(1.0, dtype=torch.float)
d = torch.FloatTensor(2,3)
f = torch.IntTensor([1,2,3,4])
k = torch.rand(2, 3)
l = torch.ones(2, 3)
m = torch.zeros(2, 3)
n = torch.arange(0, 10, 2) #arrange用于创造等差数列 interval is 2
-
查看/修改维度
.shape or .size()
.view(row,column)
.unsqeeze(1)#加一维度
.squeeze(1) -
tensor&numpy.array
1.array->tensor
h = torch.tensor(g) #g = np.array([[1,2,3],[4,5,6]])
i = torch.from_numpy(g)
2.tensor->array
j = h.numpy()
共享内存的情况
torch.from_numpy()和torch.as_tensor()从numpy array创建得到的张量和原数据是共享内存的,张量对应的变量不是独立变量,修改numpy array会导致对应tensor的改变。
如代码例中所示,修改g改变i
- tensor运算
o = torch.add(k,l)#o=k+l
#broadcast is two different size of tensors adding.
print(p + q)
- 灵活运用索引 [:]
- 自动求导
x1 = torch.tensor(1.0, requires_grad=True)
x1.grad.data是在有requires_grad=True即要求求导数的该数字的结果。
y.backward()反向传播于梯度,不清0会累积。