跳到主要内容

Pytorch

简介

目标

  • 了解 pytorch 深度学习框架
  • 掌握 pytorch 构建圣经网络模型

Torch 是一个与 Numpy 类似的张量(Tensor)操作库,与 Numpy 不同的是 Torch 对 GPU 支持的很好,Lua 是 Torch 的上层包装,底层是 C 语言实现,效率比较高。

Lua => Troch => Python => PyTorch

torch 是采用 c 语言为底层,然后 lua 语言为借口的深度学习框架。

特点

python 的开源机器学习库,最初由 Facebook 人工骨智能研究小组开发。

  • 用户友好,提供简单的 api
  • 简单
    • 可以利用 Python 环境提供的服务和功能
  • 自由化
    • 提供了一个提供动态计算图的出色平台。可以在运行时更改。

张量的操作

torch 封装张量的操作

torch.is_tensor(obj) 判断是否是张量 torch.is_storage 是 pytorch storage 对象返回 true torch.eye 创建为=数据为对角矩阵的张量 torch.from_numpy 装换 torch.ones 返回全是 1 张量 torch.rand 返回一个张量,包含从取件[0,1)的均匀分布中抽取的一组随机数

Tensor 索引 - torch.index_select(input, dim, index) 索引,返回张量 - 创建新的内存空间,保证安全性 - torch.nonzero(input) 返回张量中非零元素的索引 切片 - torch.unbind - Tensor[n, m] 最常用 连接、分割 torch.cat 连接 torch.chunk 分块 torch.gather 聚合,返回张量,传入聚合元素下表和目标张量 torch.split 切分 切分成相等的块,最后一个块可能小

torch.t 转置 torch.transpose 返回输入矩阵 input 的转置,交换维度 dim0 和 dim1 torch.eq 比较元素相等性 torch.equal 是否相等 torch.sort 按指定维度排序 torch.topk 按指定维度排序,返回最大值和索引

模块的介绍和使用

torch.mm

torch.nn.Module 网络的积累,创建模型的时候要继承这个类 添加层 - add_module(name, 获取子模型 - children() 设备切换 - cuda/cpu(device_id=None) 容器 Containers torch.nn.Module torch.nn.ModuleList torch.nn.Sequential torch.nn.ParameterList 参数的列表

Layers

Linear layers 全连接神经网络 torch.nn.Linear(in_features, out_features) Dropout layers,防止过拟合,随机丢弃一些神经元 torch.nn.Dropout(p=0.5, inplace=False) 激活函数 torch.nn.ReLU(inplace=False) torch.nn.Tanh(inplace=False) torch.nn.Sottmax(dim=1, inplace=False)

CNN

卷积层
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
池化层
torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False) 最大池化
标准化
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

Recurrent Layers

RNN 递归神经网络 torch.nn.RNN(args, * kwargs) LSTM torch.nn.LSTM,效果非常好 GRU torch.nn.GRU

损失函数 Loss functions

torch.nn.MSELoss(size_average=True)) 回归任务, 均方差
torch.nn.CrossEntropyLoss(size_average=True) 分类任务,交叉熵

优化器

torch.optim.SGD(params, lr=0.01, momentum=0, dampening=0, weight_decay=0, nesterov=False) torch.optim.RMSprop torch.optim.Adagrad torch.optim.Adam

参考