
神经网络
ZhuojunChen
这个作者很懒,什么都没留下…
展开
-
PyTorch中激活函数GELU、Swish、Mish函数的实现
GELU的中文名为高斯误差线性单元,它在自然语言处理领域被广泛应用。GELU激活函数结合了激活参数1或0的取值概率和神经网络的激活值,使得神经网络的激活值越小,其所乘的激活概率为1的概率越小,以此保留概率性和对输入的依赖性。具体实现如下:def gelu(x): return 0.5*x*(1+tanh(np.sqrt(2/np.pi)*(x+0.044715*pow(x,3))))Swish和Mish函数可以看作是GELU的一个特例,可以替换模型中现有的激活函数,使模型精度有所提高。实现原创 2022-05-26 21:54:46 · 5585 阅读 · 0 评论 -
PyTorch中Module类的使用方法,模型中参数的添加与获取以及保存与载入模型
1 Module类的使用方法1.1 add_module()方法可以使用该方法向模型中添加层,示例如下:self.Linear1 = nn.Linear(inputdim,hiddendim)self.add_module("Linear1", nn.Linear(inputdim,hiddendim))这两行代码是等价的,都可以向模型里添加两个全连接层。1.2 获取模型中各层的信息1.2.1 children()方法和named_children()方法for modu原创 2022-05-24 22:52:57 · 1686 阅读 · 0 评论 -
深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比
在深度学习中,优化器是其重要组成部分,本文来介绍一下常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码并对他们进行对比。1. SGDSGD的伪代码如下:SGD的梯度更新公式简单,采样用的是小样本,训练速度快,但由于是成之字形下降,在一些情况下效率很低。2. (SGD with) Momentum伪代码如下:和SGD相比,带动量的SGD主要是借助物理学中动量的概念,在下降时保留一部分之前的原创 2022-03-12 14:49:56 · 4944 阅读 · 0 评论 -
简易黑白图像放大方法(Python)
在复现一篇论文的时候,碰到需要将原图片放大一倍的需求,由于精度要求不高,网上给出的方法太过繁琐,就自己写一个简易的算法来实现。输入的是一个黑白图片矩阵。主要的思路是在两个像素点之间进行插值,如果两个像素点都是0,插值0,有一个为1,插值1,这么做会稍微扩大1的范围,但基本还是保持了原来的形状,代码如下:def augment_pic(pic):#pic:2d array aug_pic_line = [] aug_pic = [] for i in range(len(pic)原创 2021-06-21 11:00:01 · 711 阅读 · 0 评论 -
将PyTorch模型部署到C++上(Ubuntu)
为什么要这么做?PyTorch作为一个开源的Python机器学习库正受到越来越广泛的关注和应用。然而,作为一门语言,Python并不是在任何场景下都适用的。在生产以及部署到自动驾驶车辆上等场景中,C++常常是更好的选择。因此需要将PyTorch模型部署到C++上。以下是实现的步骤。将PyTorch模型转化成Torch ScriptTorch Script的作用是用TorchScript编写的任何代码都可以从Python进程中保存并加载到没有Python依赖关系的进程中。有两种方法可以实现这一步.原创 2021-06-01 15:42:39 · 1775 阅读 · 0 评论 -
【神经网络-数据分类】利用深度学习神经网络(DNN)来对数据进行分类
对于数据量大,适合以一维数据作为输入且难以探索数据内部规律的数据集,可以尝试利用深度学习神经网络(DNN)来对数据进行分类。由于是分类问题,使用Adam作为优化器,交叉熵作为损失函数,大概的网络结构代码如下:import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.utils.data.dataset import Datasetfrom torch.utils.data import DataLoade原创 2021-05-21 11:30:21 · 4373 阅读 · 1 评论 -
【神经网络-数据分类】利用卷积神经网络(CNN)对数据进行分类
对于数据量大,维度高,且难以找到数据之间内在关系的数据集,可以尝试用卷积神经网络对数据进行分类。 以下为卷积神经网络数据分类的大致结构,采用Adam作为优化器,交叉熵作为损失函数。import torchimport torch.nn as nnfrom torch.utils.data.dataset import Datasetfrom torch.utils.data import DataLoaderclass CipvCNN(nn.Module): def __ini.原创 2021-05-21 10:25:56 · 6690 阅读 · 11 评论 -
【神经网络】权值初始化以及常见的激活函数对应的初始化方法(Pytorch)
权值初始化是搭建神经网络之后的重要步骤。适当的初始化可以加速模型的收敛,而不适当的初始化则会使梯度消失或爆炸,下面主要针对常见的激活函数简要介绍两种权值初始化方法。Xavier 方法该方法主要针对饱和激活函数如 sigmoid 和 tanh 等。pytorch中的调用语句为:tanh_gain = nn.init.calculate_gain('tanh')nn.init.xavier_uniform_(m.weight.data, gain=tanh_gain)Kaiming 方法该原创 2021-05-24 14:14:11 · 706 阅读 · 0 评论