PyTorch安装与Tensor介绍
本人有一些python基础,听说过pytorch但没用过。下面记录一下pytorch学习,方便后面自己查阅。(以下代码都出自本人计算机)
一些相关链接
PyTorch中文文档: https://pytorch-cn.readthedocs.io/zh/latest/
PyTorch入门教程-简书:https://www.jianshu.com/u/5e2b32ff790c
回到正题…
一 安装PyTorch
pytorch官网:https://pytorch.org/ 。如果直接输入官网打不开可以考虑百度pytorch,从百度进入官网。需要先安装python,然后如下图所示,选择之后用command安装。
测试是否安装成功,在python里面import torch看是否报错,如果没有报错则安装成功。
二 Tensor张量
torch.Tensor是一种包含单一数据类型元素的多维矩阵
标量(Scalar)就是单纯的数字,只有大小没有方向,如1,2,3等。是0维。
向量(Vector)是一串数字,既有大小又有方向,如(1,2,3),(3,5,7)等。是1维。
矩阵(Matrix)是多个向量排在一起合成的一堆数字,如[1,2,3;4,5,6]。是2维。
张量(Tensor)是多个矩阵三维排列的。另外张量还有4维、5维的。
如下图,生成一个张量。
import torch
x = torch.Tensor(2,3)#构造一个2*3矩阵
x
上面是矩阵,那试一试更高维。
y = torch.Tensor(2,2,3)#构造2*2*3张量
y
可以看出423的张量是有两个2*3的矩阵构成。
tensor构建、索引、修改
1.从Python的list或序列来构建
a = torch.FloatTensor([[1,2,3],[4,5,6]])
a
2.一个空张量tensor可以通过规定其大小来构建
a = torch.IntTensor(2,4).zero_()
a
3.用python的索引和切片来获取和修改一个张量tensor中的内容
a = torch.FloatTensor([[1,2,3],[4,5,6]])
print(a[1][2])
a[1][2] = 9
print(a)
- Tensor的截取
这里跟matlab有点像
a[:,1]#要第二列
另外,还有很多种张量的操作,如转置(transposing)、切片(slicing)等等,可以在python官网查看:https://pytorch.org/docs/stable/torch.html
。
判断是不是一个张量
a = torch.Tensor(3,2,3)
torch.is_tensor(a)
Torch定义了7种CPU tensor类型和8种GPU tensor类型
torch.Tensor是默认的tensor类型(torch.FlaotTensor)的简称。
几种张量的加法
#先初始化两个张量
a = torch.rand(3,4)
b = torch.rand(3,4)
a+b#第一种
torch.add(a,b)#第二种
result = torch.Tensor(3,4)#第三种
torch.add(a,b,out=result)#把结果存到result上
b.add_(a)#第四种,把运算结构覆盖掉b
Tensor与numpy的Array相互转换
1.tensor转换为array
b = a.numpy()#a为tensor
2.array转换为tensor
b = torch.from_numpy(a)#a为numpy的array
CUDA的使用
如果有一块nvidia的显卡(如 GTX 1080)并支持cuda,那么可以使用显卡GPU进行tensor运算。
torch.cuda.is_available()#看看是否支持cuda
#如果返回true,那么就可以用cuda了
#例如 x = x.cuda()
如下图所示,计算两个tensor的和。使用cuda函数之后会调用GPU来运算。