当前位置: 首页 > news >正文

Pytorch常用层总结

填充

  • 一、🎈torch.nn
  • 二、🛠️ 层选择与参数配置原则
  • ⚠️ 注意事项


提示:以下是本篇文章正文内容,下面案例可供参考

一、🎈torch.nn

层类型常用参数参数选择建议与说明
Linearin_features, out_features, bias=Truein_features/out_features 由数据维度和输出维度决定。bias 通常为 True
Conv1din_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1kernel_size 常用 3 或 5。padding 可设为 kernel_size//2 以保持空间分辨率。
Conv2din_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1in_channels 为输入通道数(如 RGB 图像为 3)。out_channels 通常逐渐增加(如 32, 64, 128)。kernel_size 常用 3x3 或 5x5。padding 常设为 1(对于 3x3 卷积核)以保持尺寸。
Conv3din_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1用于视频、体积数据。参数选择逻辑类似 Conv2d,但计算量更大。
MaxPool1dkernel_size, stride=None, padding=0, dilation=1kernel_size 常用 2 或 3,stride 默认同 kernel_size,用于下采样。
MaxPool2dkernel_size, stride=None, padding=0, dilation=1常用 kernel_size=2, stride=2 将特征图尺寸减半。
Embeddingnum_embeddings, embedding_dim, padding_idx=None, max_norm=Nonenum_embeddings 至少为词汇表大小。embedding_dim 常用 100-300。
ReLUinplace=False最常用的激活函数。inplace=True 可节省内存,但需谨慎使用。
Sigmoid-用于二分类问题的输出层或门控机制。
BatchNorm1dnum_features, eps=1e-05, momentum=0.1num_features 为输入通道数。epsmomentum 通常保持默认。
BatchNorm2dnum_features, eps=1e-05, momentum=0.1用于卷积层后,稳定训练、加速收敛。num_features 为输入通道数。
LayerNormnormalized_shapenormalized_shape 指定要归一化的维度(常为特征维度)。对序列数据或小批量大小情况有效。
Dropoutp=0.5p 为丢弃概率,常用 0.1 到 0.5。训练时启用,评估时禁用。
LSTMinput_size, hidden_size, num_layers=1, batch_first=Falseinput_size 为输入特征维度。hidden_size 为隐藏状态维度。batch_first=True 可使输入输出为 (batch, seq, feature)
Transformerd_model, nhead, num_encoder_layers=6, num_decoder_layers=6d_model 为特征维度,nhead 为注意力头数(需能被 d_model 整除)。层数可根据任务复杂度调整。
CrossEntropyLossweight=None, reduction='mean'用于多分类。weight 可调整类别权重处理不平衡数据。reduction 默认求平均。
AdaptiveAvgPool2doutput_size将任意尺寸输入池化为固定尺寸 output_size(如 (1, 1) 用于全局平均池化)。

二、🛠️ 层选择与参数配置原则

  1. 理解任务与数据:选择层类型的首要依据是你的任务(如分类、检测、分割、序列建模)和数据形式(如图像、文本、音频)。
    • 图像:常用 Conv2d, MaxPool2d, BatchNorm2d, ReLU
    • 文本/序列:常用 Embedding, LSTM, Transformer, Linear
    • 视频/3D 数据:考虑 Conv3d
  2. 通道数与维度设置
    • 卷积层 out_channels:通常从较小的数字开始(如 32、64),随网络深度逐渐增加(如 128、256、512)。这有助于网络逐步提取更复杂和抽象的特征。
    • 全连接层 in_features/out_featuresin_features 必须与前一层输出的展平大小匹配。out_features 根据任务设定,如分类任务中的类别数。
    • 嵌入层 embedding_dim:常见范围是 100 到 300,需权衡模型表达能力和计算成本。
    • LSTM/Transformer hidden_size/d_model:根据序列数据的复杂度和计算资源选择,如 128、256、512、768 等。
  3. 卷积核大小 kernel_size:最常用的是 3x3(平衡感受野和参数数量),其次是 1x1(用于调整通道数)、5x5(更大感受野)。一维卷积中也类似,如 3 或 5。
  4. 步长 stride 与填充 padding
    • stride=1(默认)保持空间尺寸,stride=2(或更大)用于下采样。
    • padding 通常设置为 kernel_size // 2(对于奇数的 kernel_size)以保持输入输出的空间维度一致。
  5. 归一化层选择
    • BatchNorm* 在卷积网络和批大小较大时非常有效。
    • LayerNorm 更适用于循环神经网络、Transformer 或批大小较小的情况。
  6. 激活函数选择
    • ReLU 最常用,计算简单且能缓解梯度消失。
    • Sigmoid 主要用于二分类输出层。
  7. Dropout 的 p:通常设置在 0.1 到 0.5 之间。较大的模型或数据较少时可能需要更高的丢弃率来防止过拟合。
  8. 使用 nn.Sequential:可以帮助你清晰地组织网络层,特别是当多个层经常按顺序一起出现时。

⚠️ 注意事项

  • 参数初始化:PyTorch 层有默认初始化,但有时根据激活函数(如 He init 对于 ReLU 配合 nn.init.kaiming_normal_)进行特定初始化可能更好。
  • 设备放置:使用 model.to(device)(如 'cuda''cpu')确保模型参数和输入数据在同一设备上。
  • 梯度检查:如果训练出现问题,可以检查特定层的梯度流。
  • 微调与迁移学习:对于预训练模型,你可能会冻结前面几层的参数(设置 param.requires_grad = False),只训练顶层或分类器。还可以为不同层设置不同的学习率,例如为 backbone 设置较小的学习率,为新建的分类层设置较大的学习率。

声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!


http://www.dtcms.com/a/519773.html

相关文章:

  • 【Deepseek OCR】重磅测试,mac环境下的体验【本人已经本地实验成功】
  • 轻量化(Lightweight)概念
  • [人工智能-大模型-58]:模型层技术 - 深度神经网络的本质是一个复杂的复合数学函数
  • 【小白笔记】将十进制数(Decimal)转换为二进制数(Binary),并计算二进制表示中“1”的个数
  • 长春怎么注册网站平台wordpress 视频列表
  • 【ReAcTable】面向表格问答任务的ReAct增强框架
  • Docker 部署 Elasticsearch 全流程手册
  • React 集成Redux数据状态管理 数据共享 全局共享
  • Docker与Nginx:现代Web部署的完美二重奏
  • 【JUnit实战3_08】第四章:从 JUnit 4 迁移到 JUnit 5
  • React 03
  • 前端基础之《React(2)—webpack简介-使用Babel》
  • 广州网站建设公司嘉御建设手机银行网站
  • 【Linux系统编程】软件包管理器
  • 怎么快速定位bug?如何编写测试用例?
  • NetIP,一款开源的快速网络信息查看工具
  • 有限元方法核心原理与学习路径:从一维基础到多维拓展(七步流程)
  • TCP(滑动窗口/拥塞窗口补充)
  • nginx前端部署与Vite环境变量配置指南
  • webrtc getStats 内部调用流程分析
  • 通过 Stdio(标准输入/输出)传输机制,实现 CrewAI 与本地 MCP 服务器的连接
  • 英文版网站建设方案手机app免费制作
  • 通过API网关部署FC函数
  • 单例模式精写
  • SQL sever数据库--第三次作业
  • XLM-R模型:大规模跨语言表示的突破与实践
  • GitLab 多安全漏洞可致攻击者触发拒绝服务状态
  • JAVA基础篇:分支结构——让程序学会“做选择”
  • SpringDataRedis 快速入门总结
  • 安徽省建设厅网站资料下载建了qq群 如何快速推广