torch.nn.Linear 和 torch.nn.Dropout
  Wv2PRSlQRjkP 2023年11月02日 84 0

torch.nn.Linear 和 torch.nn.Dropout_深度学习

torch.nn.Linear 

torch.nn.Linear是PyTorch中的一个线性层,它实现了一个全连接层,即输入和输出之间的每个神经元都连接到彼此。它的构造函数接受两个参数:输入特征的数量和输出特征的数量。例如,如果你想要将一个长度为100的输入向量映射到一个长度为10的输出向量,可以使用以下代码创建一个线性层:

import torch
import torch.nn as nn

linear_layer = nn.Linear(100, 10)

在前向传递过程中,你可以将输入张量传递给线性层,然后通过调用线性层的函数来计算输出张量。例如:

input_tensor = torch.randn(2, 100)  # 随机生成2个100维的输入向量
print("input_tensor: ", input_tensor)

output_tensor = linear_layer(input_tensor)  # 计算输出张量
print("output_tensor: ", output_tensor)

在这个例子中,我们创建了一个大小为100x10的线性层,然后将一个大小为32x100的输入张量传递给它。线性层将对每个输入向量进行线性变换,并输出一个大小为32x10的输出张量。

线性层在深度学习中非常常用,它可以用于实现神经网络中的任何层,例如全连接层、卷积层等等。

输出结果如图所示,注意每次执行上述代码,输出的tensor不一样:

torch.nn.Linear 和 torch.nn.Dropout_构造函数_02

torch.nn.Dropout

torch.nn.Dropout是PyTorch中的一个Dropout层,它可以在训练期间随机地将一些神经元的输出设置为0,以减少过拟合。Dropout层通常被用于全连接层和卷积层中,可以在训练期间随机地将一些神经元的输出设置为0,然后将剩余的神经元的输出乘以一个缩放因子,以保持其期望值不变。

Dropout层的构造函数接受一个参数,即dropout_prob,它指定了每个神经元被设置为0的概率。例如,如果你想要在每个Dropout层中随机丢弃50%的神经元,可以使用以下代码创建一个Dropout层:

import torch
import torch.nn as nn

dropout_layer = nn.Dropout(0.5)

在前向传递过程中,你可以将输入张量传递给Dropout层,然后通过调用Dropout层的函数来计算输出张量。例如:

input_tensor = torch.randn(2, 100)  # 同上

output_tensor = dropout_layer(input_tensor)  # 计算输出张量
print("output_tensor: ", output_tensor)

在这个例子中,我们创建了一个Dropout层,它会随机地将每个神经元的输出设置为0或缩放因子的倒数。然后,我们将一个大小为32x100的输入张量传递给它,并计算一个大小相同的输出张量。

Dropout层是一种常用的正则化技术,可以有效地减少神经网络的过拟合。它可以用于任何深度学习模型中,特别是在训练数据较少或模型较大时,可以帮助提高模型的泛化能力。

输出结果如图所示,可以看出,不论正负,约有一半0.0000:

torch.nn.Linear 和 torch.nn.Dropout_深度学习_03









【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Wv2PRSlQRjkP