Pytorch基础
1 PyTorch简介
PyTorch是一个使用PyTorch语言的神经网络库,PyTorch 在神经网络领域可替换numpy的模块 。常用的两个神经网络库是Pytorch和Tensorflow,两者各有优劣。
Pytorch | Tensorflow | |
---|---|---|
优势 | 动态神经网络 如RNN变化时间长度的输出 | 分布式训练 |
劣势 | 静态神经网络 |
1.1 Pytorch安装
前往官网Start Locally | PyTorch,使用pip命令行安装。
2 Torch中的基本运算
2.1 Torch或Numpy
Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor(张量) 放在 GPU 中加速运算 ,就像 Numpy 会把 array 放在 CPU 中加速运算。numpy与torch具有很好的兼容性,numpy array 和torch tensor可以自由转换。
2.2 Torch API
Torch的基本用法:
import torch
data = [[1,2], [3,4]]
tensor = torch.FloatTensor(data) # 转换成32位浮点 tensor 数据生成
函数:
torch.f(tensor) ##类比numpy:np.f(nparray)
torch.mm(tensor,tensor)
要学会阅读API!!!
API:torch — PyTorch 2.1 documentation
2.3 Variable与Tensor
Pytorch 0.4以后,Variable被弃用,合并为Tensor
- Variable 变量
存储Tensor的地理位置,如果使用Variable 进行计算,返回的也是同类型的Variable。Variable也可以像Tensor一样进行计算,但是使用Variable计算时,背后有一张计算图(computational graph)。计算图将计算步骤 (节点) 都连接起来, 最后进行误差反向传递的时候, 可一次性计算所有 variable 里的修改幅度 (梯度) 。 而Tensor运算时没有这种运算能力。【Variable包含Tensor数据和其他信息】
- Tensor 张量
张量可以理解为矩阵数据
定义变量和张量:
import torch
from torch.autograd import Variable # torch 中 Variable 模块
# 先生鸡蛋
tensor = torch.FloatTensor([[1,2],[3,4]])
# 把鸡蛋放到篮子里, requires_grad是参不参与误差反向传播, 要不要计算梯度
variable = Variable(tensor, requires_grad=True)
读取Variable中的Tensor数据:
variable.grad #data.grad Variable变量的梯度
variable #Variable变量
variable.data #Variable变量中的Tensor数据
variable.data.numpy() #Variable变量中的Tensor数据 的numpy形式