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方便
- 运行慢
- 静态图先定义计算图(模型)不断使用这个模型,每次使用不需要重新定义
在深度学习方面,有着很多的计算推导过程,如果你是大学生或者刚刚考研结束的朋友,这些数学问题不是问题。但是如果长期不用已经遗忘,但又想明白其背后的数学理论依据,可以先查看一下下边这三个链接。
创作不易,非授权不得转载,转载请注明出处
如果您觉的文章有用,别忘了在文末点赞~
作者:MINUS
公众号:SUMER
感谢阅读
网友评论