一、Pytorch
1.1 简介
Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。
至于为什么推荐使用Pytorch,我想最主要的原因就是它非常的简洁,非常符合Python的风格。
1.2 安装
首先确保你已经安装了GPU环境,即Anaconda、CUDA和CUDNN
随后进入Pytorch官网PyTorch
官网会自动显示符合你电脑配置的Pytorch版本,复制指令到conda环境中运行即可
测试是否安装成功
import torch
print(torch.__version__) # pytorch版本
print(torch.version.cuda) # cuda版本
print(torch.cuda.is_available()) # 查看cuda是否可用
二、Tensor
Tensor张量是Pytorch里最基本的数据结构。直观上来讲,它是一个多维矩阵,支持GPU加速,其基本数据类型如下
数据类型 | CPU tensor | GPU tensor |
8位无符号整型 | torch.ByteTensor | torch.cuda.ByteTensor |
8位有符号整型 | torch.CharTensor | torch.cuda.CharTensor |
16位有符号整型 | torch.ShortTensor | torch.cuda.ShortTensor |
32位有符号整型 | torch.IntTensor | torch.cuda.IntTensor |
64位有符号整型 | torch.LongTensor | torch.cuda.LonfTensor |
32位浮点型 |
torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点型 | torch.DoubleTensor | torch.cuda.DoubleTensor |
布尔类型 | torch.BoolTensor | torch.cuda.BoolTensor |
2.1 Tensor创建
2.1.1 torch.tensor() && torch.tensor([])
二者的主要区别在于创建的对象的size和value不同
2.1.2 torch.randn && torch.randperm
生成的数据类型为浮点型,与numpy.randn生成随机数的方法类似,生成的浮点数的取值满足均值为0,方差为1的正态分布
torch.randpern(n)为创建一个n个整数,随机排列的Tensor
2.1.3 torch.range(begin,end,step)
生成一个一维的Tensor,三个参数分别的起始位置,终止位置和步长
2.1.4 指定numpy
很多时候我们需要创建指定的Tensor,而numpy就是一个很好的方式
2.2 Tensor运算
函数 作用
函数 | 作用 |
torch.abs(A) | 绝对值 |
torch.add(A,B) | 相加,A和B既可以是Tensor也可以是标量 |
torch.clamp(A,max,min) | 裁剪,A中的数据若小于min或大于max,则变成min或m |