首页 > 其他分享 >PyTorch中的nn.LeakyReLU()、nn.Module和nn.ModuleList

PyTorch中的nn.LeakyReLU()、nn.Module和nn.ModuleList

时间:2024-01-14 23:45:43浏览次数:36  
标签:nn self LeakyReLU Module PyTorch 模块 ModuleList

一.nn.LeakyReLU()函数

  在 PyTorch 中,nn.LeakyReLU() 是一个激活函数,用于引入非线性性到神经网络中。Leaky ReLU 是修正线性单元(ReLU)的一种变体,它在输入为负数时不是完全置零,而是引入一个小的负斜率。nn.LeakyReLU() 的初始化参数如下:

  • negative_slope(默认为 0.01):负斜率,指定当输入为负数时的斜率值。通常设置为一个小的正数。

  举个例子,如下所示:

import torch
import torch.nn as nn

# 创建 LeakyReLU 激活函数实例
leaky_relu = nn.LeakyReLU(negative_slope=0.01)

# 假设有一个输入张量 x
x = torch.randn(3, 3)

# 将输入张量传递给 LeakyReLU 激活函数
output = leaky_relu(x)

  在这个例子中,negative_slope 参数被设置为 0.01,但可根据需求调整。Leaky ReLU 的主要优点之一是在输入为负数时允许一定的信息流,这有助于避免梯度消失问题,尤其在深层网络中。

二.nn.Module 模块

  nn.Module 是 PyTorch 中所有神经网络模块的基类。任何自定义神经网络层、模型或其他组件都应该继承自 nn.Module。其特征如下所示:

  • 提供了一些基本功能,如参数管理、子模块追踪等。
  • 允许定义网络层的前向传播逻辑。
  • 能够自动追踪网络的参数,使得优化器可以更新这些参数。

  举个例子,如下所示:

import torch.nn as nn

class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc = nn.Linear(in_features=10, out_features=5)

    def forward(self, x):
        return self.fc(x)

三.nn.ModuleList 模块

  nn.ModuleList 是用于将多个子模块组合成列表形式的容器。它允许在模型中方便地管理多个子模块,例如堆叠多个层。其特征如下所示:

  • 可以通过索引访问和操作列表中的每个子模块。
  • 允许在 forward 方法中方便地迭代或使用列表中的模块。

  举个例子,如下所示:

import torch.nn as nn

class ComplexModel(nn.Module):
    def __init__(self):
        super(ComplexModel, self).__init__()
        self.layers = nn.ModuleList([
            nn.Linear(in_features=10, out_features=5),
            nn.ReLU(),
            nn.Linear(in_features=5, out_features=1)
        ])

    def forward(self, x):
        for layer in self.layers:
            x = layer(x)
        return x

  总之,在 PyTorch 中,nn.Modulenn.ModuleList 是用于构建神经网络的两个关键组件。nn.Module 提供了一个通用的神经网络模块的基类,而 nn.ModuleList 是用于管理多个子模块的容器。通常,nn.Module 的派生类会包含 nn.ModuleList 作为其属性,以构建更复杂的网络结构。




NLP工程化

1.本公众号以对话系统为中心,专注于Python/C++/CUDA、ML/DL/RL和NLP/KG/DS/LLM领域的技术分享。
2.本公众号Roadmap可查看飞书文档:https://z0yrmerhgi8.feishu.cn/wiki/Zpewwe2T2iCQfwkSyMOcgwdInhf

NLP工程化(公众号)

NLP工程化(星球号)

标签:nn,self,LeakyReLU,Module,PyTorch,模块,ModuleList
From: https://www.cnblogs.com/shengshengwang/p/17964474

相关文章

  • MYISAM和INNODB的区别
    INNODB支持事务,而MYISAM不支持事务。INNODB支持外键,而MYISAM不支持外键。MYISAM中B+Tree的数据结构存储的内容是实际数据的地址值,它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引。InnoDB中B+树的数据结构中存储的都是实......
  • AtCoder Beginner Contest 336
    AtCoderBeginnerContest336A-LongLoong#include<bits/stdc++.h>#defineendl'\n'//#defineintlonglongusingnamespacestd;voidsolve(){ intx; cin>>x; cout<<"L"; while(x--)cout<<"o&q......
  • DIANN-MSstats groupComparison Issue: undefined columns selected
    1.Whaterrormessagedidyouencounter?Errorin`[.data.frame`(as.data.frame(comparisons),,cols):undefinedcolumnsselected 2.Howdidyousolvetheerror?install.packages("lme4",type="source") 3.Whatarethepos......
  • 【动手学深度学习_李沐】笔记:(五)卷积神经⽹络(convolutional neural network,CNN)
    【五、卷积神经网络】笔记1.从全连接层到卷积特点(沃尔多检测器):①平移不变性:不管出现在图像中的哪个位置,神经⽹络的底层应对相同图像区域做出类似的响应,因此能够以相同的⽅式处理局部图像②局部性:神经⽹络的底层只探索输⼊图像的局部区域,这些局部特征可以融会贯通,在整个......
  • PyTorch项目源码学习(3)——Module类初步学习
    torch.nn.ModuleModule类是用户使用torch来自定义网络模型的基础,Module的设计要求包括低耦合性,高模块化等等。一般来说,计算图上所有的子图都可以是Module的子类,包括卷积,激活函数,损失函数节点以及相邻节点组成的集合等等,注意这里的关键词是“节点”,Module族类在计算图中主要起到搭......
  • 【代码复现(吐槽向)】Revisiting a Methodology for Efficient CNN Architectures in Pr
    【论文写不出来,痛苦中】这篇文章是我看到框架最简单,效果最好的对于公开数据集的攻击没有之一。代码:KULeuven-COSIC/TCHES20V3_CNN_SCA(github.com)吐槽:1坑:TF的版本问题,有了torch,谁用TF,但是偏偏GITHUB上所有的SCA的代码都是TF写的,还有丧心病狂TF1.x,版本安装几十年,不如选一个服......
  • 深度学习3D网格分割网络---MeshCNN
    MeshCNN是2019年提出的直接在3DMesh上进行分类和分割的网络,MeshCNN在3D网格上定义了定义了卷积和池化层,依据三维模型边的连通关系将其转换为一个图来研究。最终能够在来自SHREC11数据集的30个类上达到98.6%的精度,并且在部件和人体数据集上有很好的分割性能。论文主页:https://ra......
  • IDEA项目名称后面出现中括号,模块Modules的名子和文件夹名称不同,可以右键修改名称也可
    IDEA项目名称后面出现中括号,Modules的名子和文件夹名称不同,可以右键修改名称也可以在File->ProjectStructure修改Modules的Name(快捷键ctrl+Shift+Alt+s)Project中出现中括号如:原因:Modules的名子和文件夹名称不同解决主要是通过修改名称一致就可以可以右键修改名称也可......
  • AtCoder Beginner Contest 335 G Discrete Logarithm Problems
    洛谷传送门AtCoder传送门考虑若我们对于每个\(a_i\)求出来了使得\(g^{b_i}\equiva_i\pmodP\)的\(b_i\)(其中\(g\)为\(P\)的原根),那么\(a_i^k\equiva_j\pmodP\)等价于\(kb_i\equivb_j\pmod{P-1}\),有解的充要条件是\(\gcd(b_i,P-1)\midb_j\)。显然......
  • 【解决方案】Error running,Command line is too long
    一、现象IDEA提示Errorrunning,Commandlineistoolong二、原因Java命令行启动举例如下图,当命令行字符过多的时候,就会出现Errorrunning,Commandlineistoolong的问题三、解决思路上图是最终解决方案,下文会再次出现。现在主要是讲解none、JARmanifest是什......