多一些Aha Time,发现技术的美妙🍺|

啊原来是这样呀

园龄:8年3个月粉丝:3关注:9

【AI】PyTorch的基本使用

参考资料:

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 中国大陆许可协议进行许可。

posted @   啊原来是这样呀  阅读(29)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起