Pytorch学习笔记-03 模型创建

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: Pytorch学习笔记-03 模型创建

模型创建步骤



两要素:


构建子模块


init()


拼接子模块


forward()


nn.Module



nn.Module


parameters : 存储管理 nn.Parameter 类

modules : 存储管理 nn.Module 类

buffers :存储管理缓冲属性,如 BN 层中的 running_mean


总结


一个 module 可以包含多个子 module

一个 module 相当于一个运算,必须实现 forward() 函数

每个 module 都有 8 个字典管理它的属性


模型容器 Containers


Sequential

nn.Sequential是 nn.module 的容器,用于 按顺序 包装一组网络层


顺序性 :各网络层之间严格按照顺序构建

自带 forward()forward():自带的 forward 里,通过 for 循环依次执行前向传播运算


ModuleList

nn.ModuleList


append() 在 ModuleList 后面 添加 网络层

extend():拼接 两个 ModuleList

insert() 指定在 ModuleList 中位置 插入 网络层


ModuleLDict

nn.ModuleDict

是 nn.module 的容器,用于包装一组网络层,以 索引 方式调用网络层

主要方法:


clear() 清空 ModuleDict

items() 返回可迭代的键值对 (key value pairs)

keys() 返回字典的键 (key)

values() 返回字典的值 (values)

pop() 返回一对键值,并从字典中删除


总结

nn.Sequential 顺序性 ,各网络层之间严格按顺序执行,常用于 block 构建

nn.ModuleList 迭代性 ,常用于大量重复网构建,通过 for 循环实现重复构建

nn.ModuleDict 索引性 ,常用于可选择的网络层


卷积层


nn.Conv2d

功能:对多个二维信号进行二维卷积

主要参数:


in_channels :输入通道数

out_channels :输出通道数,等价于卷积核个数

kernel_size :卷积核尺寸

stride :步长

padding :填充个数

dilation :空洞卷积大小 (用于增大感受野

groups :分组卷积设置( 模型压缩

bias :偏置

卷积维度:一般情况下 ,卷积核在几个维度上滑动,就是几维卷积


转置卷积

转置卷积又称为反卷积Deconvolution 和部分跨越卷积 Fractionallystrided Convolution ) 用于 对图像进行上采样 UpSample


池化


池化运算:对信号进行收集 ”并 总结 ”,类似水池收集水资源,因而得名池化层


nn.MaxPool2d

功能:对二维信号(图像)进行最大值池化

主要参数:


kernel_size :池化核尺寸

stride :步长

padding :填充个数

dilation :池化核间隔大小

ceil_mode :尺寸向上取整

return_indices :记录池化像素索引


nn.AvgPool2d

功能:对二维信号(图像)进行平均值池化

主要参数:


kernel_size :池化核尺寸

stride :步长

padding :填充个数

ceil_mode :尺寸向上取整

count_include_pad :填充值用


nn.MaxUnpool2d

功能:对二维信号(图像)进行最大值池化上采样

主要参数:


kernel_size :池化核尺寸

stride :步长

padding :填充个数


激活函数


激活函数对特征进行非线性变换,赋予多层神经网络具有深度 的意义


nn.Sigmoid

特性:


输出值在 ( 0,1),符合概率

导数范围是 [0, 0.25)易导致梯度消失

输出为非 0 均值,破坏数据分布

nn.tanh

特性:


输出值在 (-1,1),数据符合 0 均值

导数范围是 (0,1) 易导致梯度消失

nn.ReLU

特性:


输出值均为正数,负半轴导致死神经元

导数是 1, 缓解梯度消失,但易引发梯度爆炸

nn.LeakyReLU

negative_slope : 负半轴斜率


nn.PReLU

init : 可学习斜率


nn.RReLU

lower : 均匀分布下限


特性:


输出值均为正数,负半轴导致死神经元

导数是 1, 缓解梯度消失,但易引发梯度爆炸

nn.LeakyReLU

negative_slope : 负半轴斜率


nn.PReLU

init : 可学习斜率


nn.RReLU

lower : 均匀分布下限

upper 均匀分布上限

目录
相关文章
|
2天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于AlexNet的预训练模型介绍
【PyTorch实战演练】基于AlexNet的预训练模型介绍
94 0
|
2天前
|
机器学习/深度学习 关系型数据库 MySQL
大模型中常用的注意力机制GQA详解以及Pytorch代码实现
GQA是一种结合MQA和MHA优点的注意力机制,旨在保持MQA的速度并提供MHA的精度。它将查询头分成组,每组共享键和值。通过Pytorch和einops库,可以简洁实现这一概念。GQA在保持高效性的同时接近MHA的性能,是高负载系统优化的有力工具。相关论文和非官方Pytorch实现可进一步探究。
124 4
|
2天前
|
PyTorch 算法框架/工具 异构计算
pytorch 模型保存与加载
pytorch 模型保存与加载
6 0
|
2天前
|
PyTorch 算法框架/工具 Python
【pytorch框架】对模型知识的基本了解
【pytorch框架】对模型知识的基本了解
|
2天前
|
机器学习/深度学习 算法 PyTorch
PyTorch模型优化与调优:正则化、批归一化等技巧
【4月更文挑战第18天】本文探讨了PyTorch中提升模型性能的优化技巧,包括正则化(L1/L2正则化、Dropout)、批归一化、学习率调整策略和模型架构优化。正则化防止过拟合,Dropout提高泛化能力;批归一化加速训练并提升性能;学习率调整策略动态优化训练效果;模型架构优化涉及网络结构和参数的调整。这些方法有助于实现更高效的深度学习模型。
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch与迁移学习:利用预训练模型提升性能
【4月更文挑战第18天】PyTorch支持迁移学习,助力提升深度学习性能。预训练模型(如ResNet、VGG)在大规模数据集(如ImageNet)训练后,可在新任务中加速训练,提高准确率。通过选择模型、加载预训练权重、修改结构和微调,可适应不同任务需求。迁移学习节省资源,但也需考虑源任务与目标任务的相似度及超参数选择。实践案例显示,预训练模型能有效提升小数据集上的图像分类任务性能。未来,迁移学习将继续在深度学习领域发挥重要作用。
|
2天前
|
机器学习/深度学习 PyTorch 调度
PyTorch进阶:模型保存与加载,以及断点续训技巧
【4月更文挑战第17天】本文介绍了PyTorch中模型的保存与加载,以及断点续训技巧。使用`torch.save`和`torch.load`可保存和加载模型权重和状态字典。保存模型时,可选择仅保存轻量级的状态字典或整个模型对象。加载时,需确保模型结构与保存时一致。断点续训需保存训练状态,包括epoch、batch index、optimizer和scheduler状态。中断后,加载这些状态以恢复训练,节省时间和资源。
|
2天前
|
机器学习/深度学习 数据采集 PyTorch
构建你的第一个PyTorch神经网络模型
【4月更文挑战第17天】本文介绍了如何使用PyTorch构建和训练第一个神经网络模型。首先,准备数据集,如MNIST。接着,自定义神经网络模型`SimpleNet`,包含两个全连接层和ReLU激活函数。然后,定义交叉熵损失函数和SGD优化器。训练模型涉及多次迭代,计算损失、反向传播和参数更新。最后,测试模型性能,计算测试集上的准确率。这是一个基础的深度学习入门示例,为进一步探索复杂项目打下基础。
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
|
2天前
|
PyTorch 算法框架/工具 Python
Pytorch构建网络模型时super(__class__, self).__init__()的作用
Pytorch构建网络模型时super(__class__, self).__init__()的作用
14 0