1.简介
优点:
编程简单,类似Numpy
只需要设置前向传播,反向传播过程梯度自动计算
动态图,方便调试
2.基本组成元素
Tensor:基本数据单元,多维数组(data)
Vairable:等同于带梯度的Tensor(data + grad + creator),高版本中与tenesor合并
nn:卷积、池化、激活函数等层的实现
Module:网络结构,包含一系列Tensor和nn的计算过程
torch基本操作:运算
只保留叶子节点的梯度,或使用retain_grad(),保留中间变量的梯度
nn----卷积、池化、激活等层,function只定义一个操作,无法保存参数
带有参数的放在网络的初始化中,不带参数的放在前向传播中
3.构建神经网络
步骤:
准备数据:Dataset Dataloader,可以快速、提前提取数据到内存中,提供框架,只需要写核心函数,提供多种数据增广支持
网络设计:初始化、forward
损失函数:nn.entrophy, nn.MSELoss
参数更新:torch.optim optimizer = optimSGD(net.parameters(), lr=args.lr, momentum = 0.9, weight_decay=1e-4)
进阶
1)多GPU并行,torch.nn.DataParallel单机多卡
2)cpp extension扩展,实现新的功能,加速。过程:使用.c实现,将其编译成python可用的,最后加入pytorch(function, module)网络中
3)tensorboardX可视化,安装tensorflow,安装tensorboardX,初始化,记录,可视化