《------往期经典推荐------》
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】,持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~
《------正文------》
你
引言
在使用PyTorch构建深度学习模型时,了解关键层至关重要。视觉、语言建模、时间序列和音频中的所有现代模型都使用这些层作为更复杂块中的基础。
1.线性(全连接)层:
torch.nn.Linear
线性层通过将特征向量与权重矩阵相乘并添加可选的偏置来对传入数据应用线性变换。它通常用于全连接神经网络、Transformer模型中的块、分类任务,以及许多模型中的最后一层。
2.卷积层:
torch.nn.Conv1d
(序列)、torch.nn.Conv2d
(图像)、torch.nn.Conv3d
(视频,3D)
卷积层应用卷积操作来捕获空间或时间依赖性,它在输入的不同部分应用相同的权重。这是计算机视觉的基本功能(例如,用于图像分类的CNN),但由于其计算效率,也适用于序列数据,视频和3D模型。
3.批量标准化层:
torch.nn.BatchNorm1d
(序列)、torch.nn.BatchNorm2d
(图像)、torch.nn.BatchNorm3d
(视频,3D)
Batch Normalization层对输入进行标准化,以获得学习的均值和方差,从而加速训练并提高模型稳定性。它经常用于深度神经网络,以提高收敛性和性能,例如计算机视觉模型。
4.随机丢弃层:
torch.nn.Dropout
、torch.nn.Dropout1d
(序列)、torch.nn.Dropout2d
(图像)、torch.nn.Dropout3d
(视频,3D)
Dropout层在训练过程中随机将一部分输入单元设置为零,以便于更好地使用下一层中的权重。Dropout1d、Dropout2d和Dropout3d分别将此功能扩展到1D、2D和3D输入。它们通常用于提高各种类型神经网络的泛化能力,但特别用于线性层。
5.嵌入层:
torch.nn.Embedding
嵌入层映射离散输入数据(例如,词)转换成连续的向量表示。它在自然语言处理任务中至关重要,例如**大型语言模型(LLMs)**中的单词嵌入。
6.激活层:
torch.nn.ReLU`,`torch.nn.Sigmoid`,`torch.nn.Tanh`,`torch.nn.Softmax
激活层将非线性函数应用于输入,使模型能够学习复杂的模式。它们在神经网络的每一层之后使用,以引入非线性; ReLU在隐藏层中很常见,而Softmax在输出层中用于分类任务。(阅读这篇文章以了解更多)
7.注意力层:
torch.nn.MultiheadAttention
MultiheadAttention层允许模型在进行预测时关注输入序列的不同部分。它广泛用于****基于transformer的模型,如LLMs,用于机器翻译,文本摘要和其他NLP应用程序等任务。
8.池化层:
torch.nn.MaxPool1d
(序列),torch.nn.AvgPool1d
(序列),torch.nn.MaxPool2d
(图像)、torch.nn.AvgPool2d
(图像)、torch.nn.MaxPool3d
(视频,3D)、torch.nn.AvgPool3d
(视频,3D)
池化层减少了输入的空间维度,通常在卷积层之后用于对特征图进行下采样。最大池化从输入的每个区域中选择最大值,而平均池化计算平均值。这些层有助于减少计算负载,并引入信息瓶颈,这有助于过拟合。
9.填充层:
torch.nn.ConstantPad1d
(序列)、torch.nn.ConstantPad2d
(图像)、torch.nn.ConstantPad3d
(视频,3D)
填充层向输入数据添加填充,以确保不同大小的输入被标准化为具有相同的大小,以便它们可以作为一个批处理并行处理。这在卷积或序列模型中特别有用,以控制输出的空间维度。ConstantPad1d、ConstantPad2d和ConstantPad3d分别将此功能扩展到1D、2D和3D输入。
好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!