【AI】PyTorch的基本使用
参考资料:
注:以下内容仅为要点记录
一.环境安装
注意多找教程交叉参考
Anaconda
Python
PyTorch
PyCharm和Anaconda中的PyTorch环境相关联
二.Python中的小工具
dir() 用于查看指定package中的内容
help() 用于查看指定函数的使用指导
三.控制台、PyCharm和Jupyter比较
控制台是每一句作为一个程序块
PyCharm是将整个py文件作为一个程序块
Jupyter可以控制块的大小
四.PyTorch加载数据
from torch.unils.data import DataSet
DataSet、DataLoader
DataSet:排列数据及其label
DataLoader:为网络提供不同形式的数据
rawData-》DataSet-》DataLoader-》Network
数据读取后处理:路径拼接、元素枚举、data-label对应
五.TensorBoard显示
构建SummaryWriter、设置路径、塞入数据、打开TersorBoard查看可视化数据
六.Transforms工具箱
from torchvision import transforms
6.1常见的transforms
Compose:将不同的transforms结合在一起,前一个输出是后一个的输入
ToTensor:将输入数据转换为Tensor,Tensor包装了神经网络必须要用到的参数,例如将输入图像转为Tensor
Nrmailze:归一化,输入均值与标准差,(i-mean)/std
Resize:调整大小
ToPILImage:转为PILImage
七.torchvision中数据集的使用
torchvision.dataset中包括MNIST、COCO等数据集可以下载使用
八.DataLoader
从DataSet中按一定的规则取牌,将data和label分别打包,提供给网络
参数shuff:是否打乱顺序
九.神经网络基本骨架nn.Module的使用
nn:NeuralNetwork
nn.Module中包括:Contaioners、ConvolutionLayer、PoolingLayer、PaddingLayer
所有网络都须继承于nn.Module,重写__init__和forward函数
十.卷积操作与卷积层
定义矩阵/张量,作为输入数据
设置stride步长,可以分别设置纵向和横向
padding填充
kernel采样窗口
bias偏置
outputChannel输出通道数量
十一.池化层
池化层用于抽取纹理特征
stride默认等于kernel_size
dilation空洞卷积、间隔采样
十二.非线性激活
输出函数:
sigmoid
ReLU
十三.线性层及其他层
LSTM层
Transform层
Linear层
Dropout层防止过拟合
十四.Sequential序列
类似Compose,可以链式连接各层
TensorBoard可以将网络可视化
十五.lossFunction损失函数
用途:
(1)计算实际输出与目标的差距,
(2)为优化提供依据,从而进行反向传播
分别有:
(1)L1Loss
(2)L2Loss
(3)CrossEntropyLoss
步骤:
(1)ret_loss=loss(output,target)
(2)ret_loss.backword()//会自动求解反向梯度
十六.优化器
有了梯度之后用优化器可以调整网络
优化器有多种算法,常用的如随机梯度下降法
步骤:
(1)ret_loss=
(2)opti.grad清零
(3)ret_loss.backward();
(4)opti.step()
十七.现有模型的使用及修改
在torchvision.models中包含多个知名model
对于某个model可以:
(1).addModule添加层块
(2).module.addModule为某块添加层
(3).module[index] = mm.some层 //使用some层来替换已有的层
十八.模型的加载与保存
18.1全量保存与加载
(1)torch.save(model,path) //保存
(2)torch.load(modelFIleName) //加载
18.2非全量保存与加载
torch.save(model.state_dict(),path) //保存
model.load_state_dict(torch.load(path)) //加载
十九.完整的模型训练套路
以CIFAR10数据集为例
步骤:
(1)定义网络模型
(2)实例化模型
(3)定义损失函数(选一个)
(4)确定优化器(例如SGD)
(5)设置过程参数,记录迭代过程
(6)测试集的引入
二十.GPU的训练
模型、数据和损失函数都可以被GPU加持
两种方式:
(1)通过.cuda()方法获取被GPU加持过的实例
(2).to(device),device = torch.device("cpu/cuda")
.cuda方法:
(1)model = model.cuda()
(2)for data in loader: data=data.cuda
(3)loss_func = loss_func.cuda
.to(device)方法:
(1)model = model.to(device)
(2)数据同理
(3)损失函数同理
本文作者:OhOfCourse
本文链接:https://www.cnblogs.com/OhOfCourse/p/17381353.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步