Pytorch入门知识

一:pytorch.nn常用知识整理

构建神经网络

1.激活函数

(1)softmax函数:

S_{i}=\frac{e^{i}}{\sum_{i}^{}e^{j}}

 将多个神经元的输出,映射到(0,1)区间内;

 很多时候,Sigmoid 作为最后一层的激活函数与交叉嫡代价函数组合;

 如果需要将输出解释为概率分布,一般建议用softmax激活函数。
(2)ReLU激活函数:

ReLU(x)=max[x,0]

计算量小
一定程度上缓解“梯度消失”问题
使部分神经元的输出为零,一定程度上可以缓解过拟合
更符合生物学的神经激活机制
(3)其他激活函数

2.代价函数

损失函数的函数。

(1)L1Loss函数:

两者差的绝对值的平均值

(2)MSELoss函数:

均方误差

(3)CrossEntropyLoss函数 / NLLLoss函数:

输入经过softmax函数后,再计算交叉熵。

交叉熵:

C=-\frac{1}{n}\sum_{x}^{}[ylna+(1-y)ln(1-y)]

 (4)其他代价函数

3.Layer

3.1卷积神经网络(CNN

常用于图像处理。

(1)卷积层(Conv1d、Conv2d、Conv3d...)

Conv2d输入:

class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

  • in_channels(int) – 输入信号的通道
  • out_channels(int) – 卷积产生的通道
  • kerner_size(int or tuple) - 卷积核的尺寸
  • stride(int or tupleoptional) - 卷积步长
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • dilation(int or tupleoptional) – 卷积核元素之间的间距
  • groups(intoptional) – 从输入通道到输出通道的阻塞连接数
  • bias(booloptional) - 如果bias=True,添加偏置

(2)归一化层 / 标准化层(BatchNorm1d、BatchNorm1d、BatchNorm1d...)

class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True)

  • num_features: 来自期望输入的特征数,该期望输入的大小为'batch_size x num_features [x width]'
  • eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
  • momentum: 动态均值和动态方差所使用的动量。默认为0.1。
  • affine: 一个布尔值,当设为true,给该层添加可学习的仿射变换参数。

(3)池化层(MaxPool1d、MaxPool2d、MaxPool3d...)

池化层可以降低数据尺寸。

class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

  • kernel_size(int or tuple) - max pooling的窗口大小
  • stride(int or tupleoptional) - max pooling的窗口移动的步长。默认值是kernel_size
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数
  • return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
  • ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作

(4)线性层

class torch.nn.Linear(in_features, out_features, bias=True)

  • in_features - 每个输入样本的大小
  • out_features - 每个输出样本的大小
  • bias - 若设置为False,这层不会学习偏置。默认值:True

(5)Dropout Layer

防止过拟合。随机将输入张量中整个通道设置为0。

class torch.nn.Dropout(p=0.5, inplace=False)

  • p - 将元素置0的概率。默认值:0.5
  • in-place - 若设置为True,会在原地执行操作。默认值:False

(6)典型卷积神经网络结构:

卷积(convolutional)层

归一化(normalization)层

ReLU层

池化(pooling)层

全连接层、softmax层等

3.2递归神经网络(RNN)、长短期记忆神经网络(LSTM)

常用于语言处理。

(1)循环层(RNN)

class torch.nn.RNN( args, * kwargs)

class torch.nn.LSTM( args, * kwargs)

4.容器

(1)nn.Module基类:

模型创建需要继承的类。

(2)forward(*input):

定义了每次执行的 计算步骤。 类中需要重写这个函数。

(3)Sequential(*args):

一个时序容器。模型会以他们传入的顺序被添加到容器中;

适用于较复杂的网络。

二:torch.optim常用知识整理

优化参数

1.optimizer构建

(1)Adam算法

class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]

  • params (iterable) – 待优化参数的iterable或者是定义了参数组的dict
  • lr (float, 可选) – 学习率(默认:1e-3)
  • betas (Tuple[floatfloat], 可选) – 用于计算梯度以及梯度平方的运行平均值的系数(默认:0.9,0.999)
  • eps (float, 可选) – 为了增加数值计算的稳定性而加到分母里的项(默认:1e-8)
  • weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认: 0)

(2)其他算法

2.optimizer执行

step(closure):

进行单次优化 (参数更新)。

三:torch.nn.init

参数设置

四:完整神经网络构建步骤

1.获取数据集;(torchvision)

2.选择计算硬件(GPU 或 CPU);

3.选择损失函数和优化器;

4.创建模型及模型实例;

5.设置训练停止的条件或训练次数;

6.训练神经网络(每一步应包含model、loss、backward、optim.step的计算);

7.测试评估训练结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值