首页 > 其他 > 详细

帮助文档

时间:2020-05-03 13:06:57      阅读:52      评论:0      收藏:0      [点我收藏+]

一、快速入门

1. 界面介绍

首先打开网址,进入网站的首页。网站有游客游览模式和用户登录模式,建议先注册登录一个账号,也是十分简便的啦,因为这样可以使用更多的功能。

页面头部有三个选项,分别为VisualPytorch, 帮助和联系我们,VisualPytorch就是主页面,可以进行模型的搭建,帮助页面是本网站的简单教程以及相关知识的讲解,在联系我们界面,可以给我们反馈你在使用过程中的遇到的问题,帮助我们进步呀。

技术分享图片

2. 组件框

在VisualPytorch界面左侧有可选择的网络层,这些层就是用来搭建神经网络模型的基本组件,在网络层的下面还有训练参数配置,主要用于确定模型的全局训练参数。下面给大家简单展示一下如何拖拽和删除这些组件框,以及组件框参数的位置。

技术分享图片

3. 生成和下载代码

在VisualPytorch界面左上角有生成代码按钮,当你搭建好自己的神经网络模型之后,就可以点击这个按钮,然后会跳转到代码页面,你也就可以看到生成的代码啦,然后再点击下载代码,就可以把代码下载到本地,畅快的玩耍一番啦。

技术分享图片

4. 保存模型

考虑到也许后续还要用自己搭建过的模型,所以我们实现了保存模型这一功能(贴心的团队,有木有),当你搭建好一个模型之后,可以直接选择保存,然后模型就会保存到你的账号啦,下次你登录还可以查看自己之前的模型。

技术分享图片

二、使用说明

1. 概述

我们的网站旨在利用清晰的可视化模型来帮助热爱deep learning的你快速搭建想搭建的模型。

目前支持的神经网络层有:reshape层,全连接层,一维卷积层,二维卷积层; 这些层及其涉及的参数的具体含义都与pytorch官方文档里一致。

2. 搭建模型

模型的搭建通过将左侧的各类层模块拖入右侧画布并连线来完成。

  • 首先要将左侧的 开始 按钮拖到右侧画布开始模型的搭建,然后一次将你想加入的层模块拖入到右侧画布中,之后点击模块四周的黑点并拖动至其他模块的黑点位置即可完成层模块的连接,支持层模块的并联。
  • 在各个层模块中,其中一些层需要填入相应参数,需要参数的层模块在点击之后会弹出该层需要的具体参数,填写之后点击确认即可保存该层参数。参数均有输入限制,若存在不合规范的参数输入在点击确认时会显示错误提示,详细的参数要求及层的功能介绍会在下文中介绍。
  • 在确认已经完成模型的搭建并填写完毕相应参数之后,可以点击 生成代码 按钮转到生成模型代码页面,若模型搭建中出现错误则无法正常生成代码并弹出错误提示。同时在完成模型搭建之后,点击 保存 按钮可以将搭建的模型保存在用户的账户中,需要注意的是,只有注册用户拥有权限保存自己搭建的模型,游客不具有保存模型的权限。

3. 生成的代码介绍

main.py里的代码主要是涉及全局的参数以及训练部分,目前该部分还有待完善。

model.py里则主要是搭建的模型代码,整个模型我们封装成了一个类,类名是 NET。

4. 模型管理

注册用户拥有保存自己搭建的模型并管理的权限,用户可以通过点击页面上显示的用户名,弹出 模型查看 和 登出 选项,点击模型查看即可进入模型管理的页面,该页面会显示用户曾搭建并保存的所有模型,每个模型都有对应的 查看 和 删除 按钮。点击查看即可进入模型搭建的页面并恢复用户曾保存的模型,用户可以对该模型进行重新编辑。点击删除即可删除相应的模型。

5. 相关的注意事项

  • 搭建神经网络模块需要有显示的开始于结束节点。
  • reshape层里如果有多个维度的话,不同维度之间需要以英文的逗号分开

三、经典模型

1. VGG_16_layers

VGG卷积神经网络是牛津大学在2014年提出来的模型,它在图像分类和目标检测任务中都表现出非常好的结果。同时,VGG16模型的权重由ImageNet训练而来。

点击在VisualPytorch中查看

2. AlexNet

AlexNet是2012年ImageNet项目的大规模视觉识别挑战中的胜出者,该项目一种巧妙的手法打破了旧观念,开创了计算机视觉的新局面。

点击在VisualPytorch中查看

3. Network in Network(NIN)

一种新型的深度网络结构,它可以增强模型在感受野内对局部区域的辨别能力。

点击在VisualPytorch中查看

四、网络层及参数

1. 简单网络层

reshape层

返回一个有相同数据但大小不同的tenser。返回的tenser必须有与原tenser相同的数据和相同数目的元素,但可以有不同的大小。一个tenser必须是连续的contiguous()才能被查看。

简单来看,view的参数就好比一个矩阵的行和列的值,当为一个数n的时候,则将数据大小变为1xn。

参数:

  • shape <非负整数及-1序列,包括所有非负整数和-1(只有-1是例外),同维度数字之间以英文的“,”分开,例如1,2,3,4,5> 无默认值

全连接层(linear_layer)

对输入数据做线性变换:y*=*Ax+b

参数:

  • in_features<正整数> - 输入通道数 无默认值
  • out_features<正整数> - 输入通道数 无默认值

形状:

  • 输入:N, in_features)
  • 输出: (N, out_features)

变量:

  • weight -形状为(out_features x in_features)的模块中可学习的权值
  • bias -形状为(out_features)的模块中可学习的偏置

元素级相加层(element_wise_add_layer)

该层不需要参数,作为几个层之间的衔接,需要注意的是,该函数的输入可以为多个向量。

channel维度拼接层(concatenate_layer)

在给定维度上对输入的张量序列seq 进行连接操作。

torch.cat()可以看做 torch.split()torch.chunk()的反操作。 cat() 函数可以通过下面例子更好的理解。

参数:

  • dim<非负整数> - 拼接维度 默认值为0

softmax层(softmax_layer)

函数表达式:

\(Softmax(x_i)=\frac{e^{x_i}}{\sum_j e^{x_j}}\)

返回:

  • 一个和输入相同尺寸和形状的张量,其值在[0,1]范围内

参数:

  • dim<正整数> - 计算维度 无默认值

dropout层(dropout_layer)

  • type<下拉框,包括1d/2d/3d> 默认值为2d

  • p<0-1间实数>:置0概率 默认值为0.5

2. 卷积层(conv_layer)

layer_type<下拉框二选一,conv/conv_transpose> - 分别表示卷积与反卷积 默认值为conv

conv和conv_transpose参数相同

  • type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
  • in_channels<正整数> - 输入通道数 无默认值
  • out_channels<正整数> - 输出通道数 无默认值
  • kernel_size <正整数> - 卷积核的尺寸 默认值为3
  • stride<正整数> - 卷积步长 默认值为1
  • dilation<正整数>– 卷积核元素之间的间距,详细描述在这里 默认值为0
  • padding<非负整数> - 输入的每一条边补充0的层数 默认值为0

形状:

  • 输入: \((N,C_{in},L_{in})\)
  • 输出: \((N,C_{out},L_{out})\)
  • 输入输出的计算方式: $L_{out}= floor(\frac{L_{in}+2p-d*(k-1)-1}{s+1}) $

变量:

  • weight(tensor) - 卷积的权重,大小是(out_channels, in_channels, kernel_size)
  • bias(tensor) - 卷积的偏置系数,大小是(out_channel

3. 池化层(pool_layer)

在神经网络中,池化函数(Pooling Function)一般将上一层卷积函数的结果作为自己的输入。经过卷积层提取过特征之后,我们得到的通道数可能会增大很多,也就是说数据的维度会变得更高,这个时候就需要对数据进行池化操作,也就是降维操作。

池化操作是用每个矩阵的最大值或是平均值来代表这个矩阵,从而实现元素个数的减少,并且最大值和平均值操作可以使得特征提取具有“平移不变性”。

layer_type<下拉框三选一,选项包括max_pool, avg_pool, max_unpool > 默认值为max_pool

max_pool

对由几个输入平面组成的输入信号进行最大池化。一般情况下我们只需要用到type, kernel_size, stride=None, padding=0这些参数。

参数:

  • type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
  • kernel_size <正整数> : 卷积核的尺寸 默认值为2
  • stride <正整数> : 卷积步长默认值为2
  • padding <非负整数> : 补充0的层数 默认值为0

avg_pool

对由几个输入平面组成的输入信号进行平均池化。一般情况下我们只需要用到type, kernel_size, stride=None, padding=0这些参数。

参数:

  • type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
  • kernel_size<正整数> : 卷积核的尺寸 默认值为2
  • stride<正整数> : 卷积步长 默认值为2
  • padding <非负整数> : 补充0的层数 默认值为0
  • ceil_mode:下拉框二选一,ceil/floor 默认值为floor
  • count_include_pad(勾选框,默认为勾选,在json中为True,否则为False):平均计算中包括零填充 默认值为true

max_unpool

参数:

  • type(下拉框三选一,选项包括1d/2d/3d) : 卷积形式 默认值为2d

  • kernel_size <正整数> : 卷积核的尺寸 默认值为2

  • stride<正整数> : 卷积步长 默认值为2

  • padding<非负整数> : 补充0的层数 默认值为0

4. 激活层(activation_layer)

激活函数作用在人工神经网络上,负责将神经元的输入映射到输出端。增加了神经网络的非线性,使得神经网络可以任意逼近任意非线性函数,从而使神经网络应用到众多的非线性模型中。

layer_type<下拉框,包括relu/sigmoid/tanh/leaky relu/PRelu/RRelu> 默认值为relu

relu

函数表达式:

\(relu(x)=max(0,x)\)

对应图像:

技术分享图片

leaky relu

函数表达式:

\(LeakyRelu(x)=max(x,0) + negative\_slope*min(0,x)\)

参数:

  • negative_slope<正数> - 控制负斜率的角度 **默认值为0.01

对应图像:

技术分享图片

sigmoid

函数表达式:

\(sigmoid(x)=\frac{1}{1+e^{-x}}\)

函数图像:

技术分享图片

tanh

函数表达式:

\(tanh(x)=\frac{e^x-e^{-x}}{e^x+e^-x}\)

函数图像:

技术分享图片

PRelu

类似leaky relu, 但是负数部分斜率可学习

参数:

  • weight<正数> - 权重初始化 非0正实数 默认值为0.25

RRelu

类似leaky relu, 但是负数部分斜率为随机均匀分布

参数:

  • lower<正数> - 均匀分布下限 默认值为0.125

  • upper<正数> - 均匀分布上限 默认值为0.333

5. 递归神经网络(RNN_layer)

参数:

  • input_size<正整数> - 输入特征数 无默认值

  • hidden_size<正整数> - 隐藏层个数 无默认值

  • num_layers<正整数> - 递归层层数 默认值为1

  • nonlinearity<二选一,tanh/relu> - 非线性激活 默认为tanh

6. 长周期神经网络(LSTM_layer)

参数:

  • input_size<正整数> - 输入特征数 无默认值

  • hidden_size<正整数> - 隐藏层个数 无默认值

  • num_layers<正整数> - 递归层层数 默认值为1

7. 标准化层(norm_layer)

layer_type<下拉框,选项包括batch_norm/group_norm/instance_norm> 默认值为batch_norm

batch_norm

参数:

  • type<下拉框,包括1d/2d/3d> 默认值为2d

  • num_features<正整数>:输入特征数 无默认值

group_norm

参数:

  • num_groups<正整数> - input_channel分组数 无默认值

  • num_channel<正整数> - input_channel个数无默认值

instance_norm参数:

  • type<下拉框,包括1d/2d/3d> 默认值为2d

  • num_features<正整数> - 输入特征数 无默认值

五、static参数

1. 简单参数

epoch<正整数> - 全数据集训练次数 默认值为10

learning_rate<0-1内实数> - 学习率 默认值为0.01

batch_size<正整数> - 每次训练个数 默认值为1

dataset<下拉框,共包含mnist,cifar10,stl10,svhn,jena,glove> - 训练数据集 默认值为mnist

ifshuffle<勾选框,默认为勾选,在json中为True,否则为False> - 是否打乱数据集 默认为true

platform<下拉框,共包含CPU,GPU> - 运行平台 默认CPU

2. 学习率下降(learning_rate_scheduler)

下拉框,共包括StepLR, MultiStepLR, ExponentialLR, CosineAnnealingLR,ReduceLROnPleateau,None 默认值为None

stepLR

  • step_size<正整数> - 衰减周期 默认值为50

  • gamma<0-1内实数> - 衰减幅度 默认值0.1

MultiStepLR

  • milestones<非负整数序列,同维度数字之间以英文的“,”分开,例如1,2,3,4,5> - 衰减时间点 默认值为50

  • gamma<0-1内实数> - 衰减幅度 默认值0.1

ExponentialLR

  • gamma<0-1内实数> - 衰减幅度 默认值为0.95

CosineAnnealingLR

  • T_max<正整数> - 下降周期(变化的半周期)默认值为50

  • eta_min<正数> - 最小学习率 默认值为0

ReduceLROnPleateau

监控指标,当指标不再变化则调整

  • factor<0-1内实数> - 调整系数 默认值为0.1
  • patience<正整数> -“耐心 ”,接受几次不变化 默认值为10
  • cooldown<正整数> - “冷却时间”,停止监控一段时间 默认值为10
  • verbose<勾选框> - 打印日志 默认勾选
  • min_lr<0-1内实数> - 学习率下限 默认值为0.0001

3. optimizer:优化器

下拉框,共包含SGD,RMSprop,Adam,Adamax,ASGD 默认值为Adam

SGD

Stochastic Gradient Descent

  • momentum <0-1间实数> - 动量 默认值为0
  • weight_decay <0-1间实数> - L2正则项系数 默认值为0
  • dampening <正数> – 动量衰减 默认值为0
  • nesterov (勾选框,默认为勾选,在json中为True,否则为False) – 使用Nesterov梯度加速 默认值为false

ASGD

Averaged Stochastic Gradient Descent

  • lambd <0-1间实数> - 衰减项 默认值为0.0001
  • alpha <0-1间实数> - eta更新幂 默认值为0.75
  • t0 <正整数> – 开始平均的点 默认值为1000000
  • weight_decay<0-1间实数> - L2正则项系数 默认值为0

Adam

  • beta1<0-1内实数> - 梯度移动平均值的系数 默认值为0.9
  • beta2<0-1内实数> - 梯度平方移动平均值的系数 默认值为0.999
  • eps <0-1内实数>- 分母稳定项 默认值为0.00000001
  • weight_decay<0-1间实数> - L2正则项系数 默认值为0
  • amsgrad(勾选框,默认为勾选,在json中为True,否则为False) - 使用AMSGrad变体 默认值为false

RMSprop

  • momentum<0-1间实数>- 动量 默认值为0
  • alpha<0-1间实数> - 平滑常数 默认值为0.99
  • eps<0-1内实数> - 分母稳定项 默认值为0.00000001
  • centered (勾选框,默认为勾选,在json中为True,否则为False)– 梯度通过方差归一化 默认值为flase
  • weight_decay<0-1间实数> - L2正则项系数 默认值为0

Adammax

无穷范数的Adam的变体

  • beta1<0-1内实数>- 梯度移动平均值的系数 默认值为0.9
  • beta2<0-1内实数>- 梯度平方移动平均值的系数 默认值为0.999
  • eps<0-1内实数>- 分母稳定项 默认值为0.00000001
  • weight_decay<0-1间实数> - L2正则项系数 默认值为0

4. loss_func:损失函数

下拉框,共包含MSELoss,CrossEntropyLoss,L1Loss,NLLLoss,BCELoss 默认值为MSELoss

MSELoss

均方误差

  • reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean

CrossEntropyLoss

交叉熵损失

  • weight (optional, <正数序列>)- 每个分类损失的权重 默认值为None
  • ignore_index (optional, <整数>)- 忽略的目标 默认值为None
  • reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean

L1Loss

mean absolute error(MAE)

  • reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean

NLLLoss

negative log likelihood loss

  • weight (optional, <正数序列>)- 每个分类损失的权重 默认值为None
  • ignore_index (optional, <整数>)- 忽略的目标 默认值为None
  • reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean

BCELoss

Binary Cross Entropy between the target and the output

  • weight (optional, <正数序列>)- 每批损失的权重 默认值为None
  • reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean

说明

本教程部分参考了PyTorch中文手册PyTorch官方文档,如果想要更详细深入了解的请访问该手册和文档。

若觉得官方文档较难读懂,先看以下个人博客:

Pytorch_Part1_简介&张量

Pytorch_Part2_数据模块

Pytorch_Part3_模型模块

Pytorch_Part4_损失函数

Pytorch_Part5_迭代训练

Pytorch_Part6_正则化

Pytorch_Part7_模型使用

帮助文档

原文:https://www.cnblogs.com/NAG2020/p/12821489.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!