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

Deep Norm

1.Deep Norm的思路

  • Deep Norm 是一种基于归一化的深度学习模型优化方法,其思路是通过在深度神经网络中引入多层归一化操作,以改善模型的训练和泛化性能。
  • Deep Norm 的主要思想是在网络的每一层之间插入归一化层,以减小输入数据的分布差异,从而加速收敛并提高模型的泛化能力。
  • 与传统的批归一化(Batch Normalization)不同,Deep Norm 在每一层都进行归一化,而不是仅在特定层进行。Deep Norm 的具体步骤如下:
  1. 输入数据:将输入数据传递给网络的第一层。
  2. 归一化层:在网络的每一层之间插入归一化层。归一化层的作用是将每层的输入数据进行归一化,使其均值为 0,方差为 1。这可以减小数据的分布差异,有助于提高模型的稳定性和泛化性能。
  3. 激活函数:在归一化层之后应用激活函数,以引入非线性变换。
  4. 下一层:将经过归一化和激活函数处理的数据传递给网络的下一层。

通过在每一层引入归一化操作,Deep Norm 可以有效地解决深度神经网络中的梯度消失和梯度爆炸问题,并提高模型的收敛速度和泛化性能。此外,Deep Norm还可以减少对学习率的敏感性,使得模型更容易优化。需要注意的是,Deep Norm 需要在训练过程中对每一层的均值和方差进行估计,可以使用滑动平均等方法来更新归一化层的参数。在测试阶段,可以使用训练阶段估计的均值和方差进行归一化。总而言之,Deep Norm 是一种通过在深度神经网络中引入多层归一化操作来优化模型的方法,可以改善模型的训练和泛化性能。

2.代码KLJ20040908/deep_learning-recordhttps://github.com/KLJ20040908/deep_learning-record

import torch
import torch.nn as nnclass DeepNorm(nn.Module):def __init__(self, input_dim, hidden_dims, output_dim):super(DeepNorm, self).__init__()self.layers = nn.ModuleList()self.norm_layers = nn.ModuleList()# 添加隐藏层和归一化层for i, hidden_dim in enumerate(hidden_dims):self.layers.append(nn.Linear(input_dim, hidden_dim))self.norm_layers.append(nn.LayerNorm(hidden_dim))input_dim = hidden_dim# 添加输出层self.output_layer = nn.Linear(input_dim, output_dim)def forward(self, x):for layer, norm_layer in zip(self.layers, self.norm_layers):x = layer(x)x = norm_layer(x)x = torch.relu(x)x = self.output_layer(x)return xif __name__ == "__main__":input_dim = 100hidden_dims = [64, 32]output_dim = 10model = DeepNorm(input_dim, hidden_dims, output_dim)# 使用模型进行训练和预测input_data = torch.randn(32, input_dim)output = model(input_data)print(output)

3.Tips

3.1.enumerate

enumerate在Python中通常用于在循环中同时获取索引和元素,比如,当遍历一个列表时,如果不仅需要元素的值,还需要知道当前元素的位置,这时候就可以用enumerate。

enumerate(iterable, start=0)

​参数说明​​:

  • iterable:可迭代对象(列表、元组、字符串等)
  • start:索引起始值(默认为0)

​返回值​​:

  • 生成由(index, element)组成的枚举对象
# 传统索引访问方式
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):print(f"Index {i}: {fruits[i]}")# 使用enumerate的改进版
for index, fruit in enumerate(fruits):print(f"Index {index}: {fruit}")

输出:

        D:\anaconda3\envs\llm_env\python.exe E:\code\python_pycharm\llm_study\test.py 
        Index 0: apple
        Index 1: banana
        Index 2: cherry
        Index 0: apple
        Index 1: banana
        Index 2: cherry

3.2.zip

zip(*iterables)

​参数说明​​:

  • *iterables:一个或多个可迭代对象(列表、元组、字符串、字典等)

​返回值​​:
生成由(elem1, elem2, ..., elemN)组成的zip对象,其中N为输入的可迭代对象数量

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]# 传统方式
for i in range(len(names)):print(f"{names[i]}得分:{scores[i]}")# 使用zip的改进版
for name, score in zip(names, scores):print(f"{name}得分:{score}")

输出:

        D:\anaconda3\envs\llm_env\python.exe E:\code\python_pycharm\llm_study\test.py 
        Alice得分:85
        Bob得分:92
        Charlie得分:78
        Alice得分:85
        Bob得分:92
        Charlie得分:78

        进程已结束,退出代码为 0

# 字典值配对
keys = ["name", "age", "city"]
values = ["David", 28, "Berlin"]person = dict(zip(keys, values))
print(person)

 输出:

        D:\anaconda3\envs\llm_env\python.exe E:\code\python_pycharm\llm_study\test.py 
        {'name': 'David', 'age': 28, 'city': 'Berlin'}

        进程已结束,退出代码为 0

相关文章:

  • spark–sql项目实验
  • 固定资产全生命周期管理:采购至报废的高效管理路径
  • Java第六节:创建线程的其它三种方式(附带源代码)
  • aws文件存储服务——S3介绍使用代码集成
  • JFrog Artifactory 制品库命令行操作指南
  • 模数转换【1】AD7699
  • MySQL知识点讲解
  • 【软件工程】软件测试基础知识
  • MYDB仿MySQL手写数据库项目总结
  • 【Maven】项目管理工具
  • 深度学习-全连接神经网络-2
  • Rust: 从内存地址信息看内存布局
  • 问题 | RAIM + LSTM 你怎么看???
  • Day5-UFS总结
  • WPS科大讯飞定制版 11.4.1.5| 无广告,省电和降低占用,可与普通版本共存
  • stm32week12
  • 如何在量子计算时代保障 Sui 的安全性
  • (14)VTK C++开发示例 --- 将点投影到平面上
  • 中通 Redis 集群从 VM 迁移至 PVE:技术差异、PVE 优劣势及应用场景深度解析
  • 【GIT】为什么要变基下拉,变基下拉失败,提示没有暂存如何解决?
  • 视频·世界读书日|林乾:碎片化阅读或影视综艺≠知识
  • 江西九江市人大常委会原副主任戴晓慧主动交代问题,接受审查调查
  • 一季度全国纪检监察机关共处分18.5万人,其中省部级干部14人
  • 马文化体验展商圈启动,环球马术冠军赛的能量不止在赛场
  • 动力电池、风光电设备退役潮来袭,国家队即将推出“再生计划”
  • 【社论】地铁读书人也是一道城市风景