nn.Sequential、nn.Linear、nn.ReLU()函数

这篇具有很好参考价值的文章主要介绍了nn.Sequential、nn.Linear、nn.ReLU()函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

nn.Sequential 是 PyTorch 中的一个容器模块,用于按照顺序组合多个神经网络层(如线性层、激活函数、池化层等)。这个容器允许你将各种层按照指定的顺序串联在一起,构建一个神经网络模型。nn.Sequential() 可以允许将整个容器视为单个模块(即相当于把多个模块封装成一个模块),forward()方法接收输入之后,nn.Sequential()按照内部模块的顺序自动依次计算并输出结果。

(1)nn.Sequential函数

以下是 nn.Sequential 函数的用法示例:

import torch.nn as nn

# 创建一个简单的神经网络模型
model = nn.Sequential(
    nn.Linear(64, 128),  # 添加一个线性层,输入特征数为64,输出特征数为128
    nn.ReLU(),           # 添加一个ReLU激活函数层
    nn.Linear(128, 64),  # 添加一个线性层,输入特征数为128,输出特征数为64
    nn.ReLU()            # 添加一个ReLU激活函数层
)

# 打印模型的结构
print(model)

#输出结果
#Sequential(
#  (0): Linear(in_features=64, out_features=128, bias=True)
#  (1): ReLU()
#  (2): Linear(in_features=128, out_features=64, bias=True)
#  (3): ReLU())

在这个示例中,我们首先导入了 PyTorch 中的 nn 模块。然后,我们创建了一个简单的神经网络模型 model,该模型由四个层组成,按照顺序连接在一起。这些层包括两个线性层(全连接层)和两个ReLU激活函数层。每个层的构造函数中都包含了相应的参数,如输入特征数和输出特征数。

你可以根据自己的需求,依次在 nn.Sequential 中添加不同类型的层,以构建你的神经网络模型。完成模型的定义后,你可以使用模型进行前向传播计算,对输入数据进行处理。

另外,你还可以通过添加其他类型的层(如卷积层、池化层、批量归一化等)来定制更复杂的神经网络结构。总之,nn.Sequential 是一个方便的工具,用于按照顺序组合神经网络层,以构建神经网络模型。

(2)nn.Linear函数

nn.Linear 是 PyTorch 中的线性层(也称为全连接层或仿射层)的类,用于构建神经网络中的线性变换。线性层将输入张量与权重矩阵相乘,然后添加偏置(偏移量)来产生输出。这是深度学习中最常见的一种层类型之一,通常用于将输入数据映射到输出数据。

以下是 nn.Linear 的构造函数及用法示例:

import torch.nn as nn

# 构造一个线性层
linear_layer = nn.Linear(in_features, out_features, bias=True)

# 输入数据
input_data = torch.randn(batch_size, in_features)

# 应用线性层
output_data = linear_layer(input_data)

下面是参数的解释:

  • in_features:输入特征的数量。这是输入张量的最后一个维度大小。

  • out_features:输出特征的数量。这是线性层产生的输出张量的最后一个维度大小。

  • bias:一个布尔值,指示是否应该包括偏置项(偏移量)。如果设置为 True,线性层将添加一个与输出特征数量相等的偏置向量;如果设置为 False,不会添加偏置。

在示例中,我们首先导入了 PyTorch 的 nn 模块,然后创建了一个 nn.Linearlinear_layer,并通过构造函数指定了输入特征数和输出特征数。然后,我们生成了一个随机输入数据 input_data,该数据的形状为 (batch_size, in_features),其中 batch_size 是批处理大小,in_features 是输入特征数。

最后,我们将 input_data 传递给 linear_layer,并获得输出数据 output_data。线性层将输入数据进行线性变换,然后添加偏置,生成了输出数据。

线性层在神经网络中常用于将高维输入数据映射到低维输出数据,或者进行特征提取和转换。这种层的参数包括权重矩阵和偏置,这些参数可以通过反向传播进行训练,以适应特定的任务。

(3)nn.ReLU()函数

nn.ReLU() 是 PyTorch 中的激活函数层,用于引入非线性性质到神经网络中。ReLU 是 “Rectified Linear Unit” 的缩写,它是深度学习中最常用的激活函数之一。

ReLU 激活函数的数学表达式如下:

f(x) = max(0, x)

它的作用是将输入值 x 大于等于 0 的部分保持不变,小于 0 的部分置为零。这种操作引入了非线性性质,有助于神经网络学习复杂的非线性关系。

以下是 nn.ReLU() 的用法示例:

import torch.nn as nn

# 创建一个ReLU激活函数层
relu_layer = nn.ReLU()

# 输入数据
input_data = torch.randn(3, 3)  # 生成一个形状为(3, 3)的随机张量

# 应用ReLU激活函数
output_data = relu_layer(input_data)

在示例中,我们首先导入了 PyTorch 的 nn 模块,然后创建了一个 nn.ReLU()relu_layer。然后,我们生成了一个随机输入数据 input_data,该数据的形状是 (3, 3)

最后,我们将 input_data 传递给 relu_layer,并获得输出数据 output_data。ReLU 激活函数将输入数据中小于 0 的部分设置为零,保持大于等于 0 的部分不变,因此 output_data 将具有相同的形状,但包含了非负值。

ReLU 激活函数通常用于深度神经网络的隐藏层,它有助于网络学习非线性特征和表示。然而,需要注意的是,ReLU 可能会导致梯度消失的问题,特别是在深层网络中。因此,有时会使用其他激活函数变种,如 Leaky ReLU、Parametric ReLU 等,来缓解这个问题。文章来源地址https://www.toymoban.com/news/detail-728155.html

到了这里,关于nn.Sequential、nn.Linear、nn.ReLU()函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch学习:神经网络模块torch.nn.Module和torch.nn.Sequential

    官方文档:torch.nn.Module CLASS torch.nn.Module(*args, **kwargs) 所有神经网络模块的基类。 您的模型也应该对此类进行子类化。 模块还可以包含其他模块,允许将它们嵌套在树结构中。您可以将子模块分配为常规属性: training(bool) -布尔值表示此模块是处于训练模式还是评估模式。

    2024年02月10日
    浏览(33)
  • PyTorch三种主流模型构建方式:nn.Sequential、nn.Module子类、nn.Module容器开发实践,以真实烟雾识别场景数据为例

    Keras和PyTorch是两个常用的深度学习框架,它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API,可以在多个底层深度学习框架上运行,如TensorFlow和CNTK。以下是Keras的特点和优点: 优点: 简单易用:Keras具有简洁的API设计,易于上手和使用,适合

    2024年02月11日
    浏览(74)
  • torch.nn.Linear详解

    在学习transformer时,遇到过非常频繁的nn.Linear()函数,这里对nn.Linear进行一个详解。 参考:https://pytorch.org/docs/stable/_modules/torch/nn/modules/linear.html 从名称就可以看出来,nn.Linear表示的是线性变换,原型就是初级数学里学到的线性函数: y=kx+b 不过在深度学习中,变量都是多维张

    2023年04月09日
    浏览(25)
  • 【torch.nn.Sequential】序列容器的介绍和使用

    nn.Sequential是一个有序的容器,该类将按照传入构造器的顺序,依次创建相应的函数,并记录在Sequential类对象的数据结构中,同时以神经网络模块为元素的有序字典也可以作为传入参数。 因此,Sequential可以看成是有多个函数运算对象,串联成的神经网络,其返回的是Module类型

    2024年02月04日
    浏览(33)
  • Pytorch常用的函数(二)pytorch中nn.Embedding原理及使用

    图像数据表达不需要特殊的编码,并且有天生的顺序性和关联性,近似的数字会被认为是近似的特征。 正如图像是由像素组成,语言是由词或字组成,可以把语言转换为词或字表示的集合。 然而,不同于像素的大小天生具有色彩信息,词的数值大小很难表征词的含义。最初

    2024年02月09日
    浏览(31)
  • 深入浅出Pytorch函数——torch.nn.Module

    分类目录:《深入浅出Pytorch函数》总目录 Pytorch中所有网络的基类,我们的模型也应该继承这个类。 Modules 也可以包含其它 Modules ,允许使用树结构嵌入他们,我们还可以将子模块赋值给模型属性。 语法 方法 torch.nn.Module.apply 实例 通过上面方式赋值的 submodule 会被注册,当调

    2024年02月12日
    浏览(44)
  • PyTorch学习笔记:nn.LeakyReLU——LeakyReLU激活函数

    功能:逐元素对数据应用如下函数公式进行激活 LeakyReLU ( x ) = max ⁡ ( 0 , x ) + α ∗ min ⁡ ( 0 , x ) text{LeakyReLU}(x)=max(0,x)+alpha*min(0,x) LeakyReLU ( x ) = max ( 0 , x ) + α ∗ min ( 0 , x ) 或者 LeakyReLU ( x ) = { x , i f x ≥ 0 α × x , otherwise begin{aligned} text{LeakyReLU}(x)= left{ begin{matrix} x,quad

    2024年02月02日
    浏览(27)
  • PyTorch学习笔记:nn.Tanh——Tanh激活函数

    功能:逐元素应用Tanh函数(双曲正切)对数据进行激活, 将元素调整到区间(-1,1)内 函数方程: Tanh ( x ) = tanh ( x ) = e x − e − x e x + e − x text{Tanh}(x)=text{tanh}(x)=frac{e^x-e^{-x}}{e^x+e^{-x}} Tanh ( x ) = tanh ( x ) = e x + e − x e x − e − x ​ 注意: 输入可以是任意尺寸的数据,输出尺寸

    2024年01月17日
    浏览(28)
  • 深入浅出Pytorch函数——torch.nn.Softmax

    分类目录:《深入浅出Pytorch函数》总目录 相关文章: · 机器学习中的数学——激活函数:Softmax函数 · 深入浅出Pytorch函数——torch.softmax/torch.nn.functional.softmax · 深入浅出Pytorch函数——torch.nn.Softmax 将Softmax函数应用于 n n n 维输入张量,重新缩放它们,使得 n n n 维输出张量的

    2024年02月15日
    浏览(37)
  • 【PyTorch】nn.Conv2d函数详解

    CONV2D官方链接 in_channels:输入的通道数,RGB 图像的输入通道数为 3 out_channels:输出的通道数 kernel_size:卷积核的大小,一般我们会使用 5x5、3x3 这种左右两个数相同的卷积核,因此这种情况只需要写 kernel_size = 5这样的就行了。如果左右两个数不同,比如3x5的卷积核,那么写作

    2024年01月22日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包