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