pytorch
Pytorch
torch.nn
torch.nn的基础功能:
- 创建神经网络
- 训练神经网络
- 保存神经网络
- 恢复神经网络
nn.Linear类(全连接层)
用于创建一个多输入、多输出的全连接层,注意本身并不包含激活函数(Functional)。
CLASS torch.nn.Linear
-
示例
1
model = nn.Linear(in_features=5, out_features=10, bias=True)
-
参数说明
in_features:
输入的二维张量的大小。一般大小为 。其中, 代表样本数(batch size), 代表特征数。对于图片数据,特征数可能是多个维度相乘的形式。out_features:
输出的二维张量的大小。这个参数指定了线性层输出的特征维度。
nn.functional(常见函数)
nn.functional定义了创建神经网络所需要的一些常见的处理函数。如没有激活函数的神经元,各种激活函数等。
torch.nn.functional
-
示例
1
2output = nn.functional.relu(input)
output = nn.functional.sigmoid(input) -
参数说明
in_features:
一般大小为 。其中, 代表样本数(batch size), 代表特征数。对于图片数据,特征数可能是多个维度相乘的形式。
nn.Xxx和nn.functional.xxx的差别
(1)大小写(2)nn.Xxx的属性更多
nn.Module
一个抽象概念,表示一个网络层,或者一个网络
维度问题
- Epoch:
时期、轮次。当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch - Batch:
批。一个Epoch的样本数量可能太过庞大,需要把它分成多个小块,也就是分成多个Batch来进行训练 - Batc_Size:
每批样本的大小。Batch Size变大,梯度变准确,但是对计算资源的要求也变大。
处理技巧
- Dropout
在训练神经网络时随机丢弃(即设置为零)网络层中的一部分神经元输出。这是正则化技术的一种,旨在减少模型的过拟合,提高模型的泛化能力。 - FeedForward
用于增加模型的非线性能力 - NormLayer
稳定训练过程和加速收敛
写在后面:如何判断你对Pytorch有一定的了解?
答案来自:KIMI1.5
- 什么是张量(Tensor)?它和 NumPy 中的数组有什么区别和联系?
张量是 PyTorch 中的基本数据结构,用于存储数据和计算操作。与 NumPy 数组相比,张量可以利用 GPU 加速计算,且与 PyTorch 的自动求导(autograd)系统紧密结合,方便进行梯度计算和模型训练。 - 梯度爆照和梯度消失
梯度消失:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果;
梯度爆炸:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。
出现原因:反向传播中多层网络导致的。1.1^x 0.9^x
梯度爆照的处理:
梯度裁剪,梯度超过这个阈值,那么就将其强制限制在这个范围之内。
网络权重正则化
换激活函数:ReLu,Leaky Relu
BatchNorm
梯度消失:
换激活函数:ReLu,Leaky Relu
BatchNorm
残差结构
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.