姓名:张庆庆
学号:19021211151
嵌牛导读:PyTorch作为深度学习的一种重要架构很值得相关从业及技术人员学习
嵌牛鼻子:PyTorch
嵌牛提问:什么是PyTorch,PyTorch的学习要点
嵌牛正文:
Pytorch背景知识其实挺庞大的,可以从它主业doc介绍就能看出来,每一个函数参数非常的多。以后如果精力允许,可以满满研究明白一个写一个。下边是针对最基础的一些内容的特别精要的一些整理。
使用方:facebook twitter nvidia
优点:GPU运算、tensor可代替numpy、构建自动求导神经网络、python优先、命令式体验、快速轻巧
tensor:基本单元,一种张量
torch.floattensor
torch.longtensor
学习内容点:
pytorch的tensor 于numpy 的tensor相互转换
需要注意 GPU 上的 Tensor 不能直接转换为 NumPy ndarray,需要使用.cpu()先将 GPU 上的 Tensor 转到 CPU 上
注意左边变量名与右边操作名的区别
可以放在不同的GPU的方法
从GPU换回CPU的方法,尤其用numpy时要转到CPU
为啥要从torch转到numpy呢?因为torch数学运算方式少于np;numpy计算能力更牛逼一些;
tensor 操作分为两种,一种是数学运算,一种是高级操作;
x = torch.ones(2, 2)
x = torch.ones(4, 4).float()
x[1:3, 1:3] = 2 #换元素
z = torch.add(x, y) 或z=x+y
x = torch.randn(4, 3)
sum_x = torch.sum(x, dim=1) # 沿着行对 x 求和
x = x.squeeze(0) # 减少第一维
x = torch.randn(3, 4, 5)
x = x.permute(1, 0, 2)
x.size()
x.shape
x = x.view(-1, 5) # 变化纬度
max_value, max_idx = torch.max(x, dim=1) #沿着行
sum_x = torch.sum(x, dim=1) # 沿着行
print(x,x.type())
Variable
from torch.autograd import Variable #变量引入
x = Variable(x_tensor, requires_grad=True) # 如何包起来
求 x 和 y 的梯度
x = Variable(x_tensor, requires_grad=True)
z=(x+2)**2
z.backward()
print(x.grad)
静态图动态图(可见网盘朱庇特笔记)
静态图先定义计算图(模型)不断使用这个模型,每次使用不需要重新定义
debug难
运行快
动态图每次构建生成模型
debug方便
运行慢
在深度学习方面,有着很多的计算推导过程,如果你是大学生或者刚刚考研结束的朋友,这些数学问题不是问题。但是如果长期不用已经遗忘,但又想明白其背后的数学理论依据,可以先查看一下下边这三个链接。
嵌牛总结:PyTorch作为深度学习的一个重要架构,包含很多数学知识,这里介绍的是他最基础的一些知识,有兴趣的可以去官网了解其更深入的知识。