一、简介
简单介绍PyTorch框架,基本使用和安装方法。Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,就是说,有一批数据,无论是图像数据还是文本数据或数值数据,都需要把数据转换成矩阵,接下来在建模操作过程中,都需要对当前数据即矩阵,做各种各样变换,做各种各样计算,一系列流程做完之后得到我们想要的结果。PyTorch可以说是做这样一件事,把所有矩阵计算的东西传入GPU中,因为GPU中做矩阵运算比较快,在GPU中帮我们实现了所有的计算功能,整体的计算,从前向传播到反向传播,有可能会涉及到非常复杂的计算,这些计算统统由框架帮我们实现,我们需要去做的,就是设计整个任务的流程,整个网络架构就可以了。深度学习框架,说白了,就是一个计算的工具,帮我们实现由前到后整体的计算流程。
一个框架该怎么学?
学框架不要去看基本的操作, 直接看一个实际的例子,一步步怎么走的即可,遇到一些基本的点,可能遇到某些函数,尽量去查,查的过程其实也是学习的过程。
二、实例
1、导入torch包
1 #导入PyTorch包 2 import torch 3 print(torch.__version__)
输出结果:
2、创建一个空的张量
1 #基本使用方法 2 #创建一个全零的5行3列的矩阵,格式是一个tensor 3 #tensor即张量,理解为矩阵即可,一维是向量,二维是矩阵,不管多少维,统一叫 4 #做tensor,是深度学习中最基本的计算单元, 5 #也可以说是框架的底层。之前用过的其他结构,如numpy、pandas之类的,会得到 6 #ndarry或DataFrame类似的结构, 7 #看起来也是矩阵,但是不能在我们这里做,要用PyTorch框架,①把所有的数据转换 8 #成tensor的格式,tensor是底层所支持的 9 #格式,所有的输入,所有的计算,都是对tensor所执行的。 10 x=torch.empty(5,3) 11 print("x:\n",x)
输出结果:
3、创建一个随机的5行3列的矩阵
1 #创建一个随机的5行3列的矩阵 2 x1=torch.rand(5,3) 3 print("x1:\n",x1)
输出结果:
4、初始化一个全零的矩阵
1 #初始化一个全零的矩阵 2 x2=torch.zeros(5,3,dtype=torch.long) 3 print("x2:\n",x2)
输出结果:
5、直接传入数据
1 #直接传入数据 2 x3=torch.tensor([5.5,3]) 3 print("x3:\n",x3)
输出结果:
6、生成全为1的矩阵并随机初始化
1 x4=x2.new_ones(5,3,dtype=torch.double) #生成全为1的矩阵 2 x5=torch.randn_like(x4,dtype=torch.float) 3 print("x4:\n",x4) 4 print("x5:\n",x5) 5 #建议执行完每次操作之后,打印维度看一看 6 print(x5.size())
输出结果:
7、基本计算方法:加法操作
1 #基本计算方法 2 y=torch.rand(5,3) 3 print("y+x5=",y+x5) 4 print(torch.add(y,x5)) #一样的操作
输出结果:
8、索引
1 #索引 2 print("x5[:,1]:\n",x5[:,1])
输出结果:
9、view操作可以改变矩阵维度
1 #view操作可以改变矩阵维度 2 x6=torch.randn(4,4) 3 print("x6:\n",x6) 4 y1=x6.view(16) #将x6拉成一行向量 5 print("y1:\n",y1) 6 z=x6.view(-1,8) #-1代表自动做计算,第二个维度有8个元素,第一个维度自动计算 7 print("z:\n",z) 8 print("x6.size:\n",x6.size(),"\n","y1.size:\n",y1.size(),"\n","z.size:\n",z.size())
输出结果:
10、与numpy的协同操作
1 #与numpy的协同操作 2 a=torch.ones(5) 3 b=a.numpy() 4 print("b:\n",b) 5 print("type(b):\n",type(b))
输出结果:
11、numpy转tensor
1 #numpy转tensor 2 a1=np.ones(5) 3 b1=torch.from_numpy(a1) 4 print("b1:\n",b1)
输出结果: