Pytorch基本使用—参数初始化

深度学习模型参数初始化是指在训练深度神经网络时,对网络的权重和偏置进行初始化的过程。合适的参数初始化可以加速模型的收敛,并提高模型的性能。

✨ 1 基本介绍

在深度学习中,常用的参数初始化方法有以下几种:

  1. 零初始化(Zero Initialization):将所有权重和偏置初始化为0。然而,这种方法会导致所有神经元具有相同的输出,无法破坏对称性,因此不常用。
  2. 随机初始化(Random Initialization):将权重和偏置随机初始化为较小的随机值。这种方法可以打破对称性,但并不能保证初始化的权重和偏置能够适应网络的输入和输出分布。
  3. Xavier初始化(Xavier Initialization):根据每一层的输入维度和输出维度的大小来进行初始化。Xavier初始化方法根据激活函数的导数和输入输出的维度来调整初始化的范围,使得每一层的激活值保持在一个合适的范围内。
  4. He初始化(He Initialization):类似于Xavier初始化,但在计算权重的标准差时,将输入维度除以2。这是由于ReLU等非线性激活函数的性质导致的。
  5. 预训练初始化(Pretraining Initialization):在某些情况下,可以使用预训练的模型参数来初始化新的模型。例如,利用在大规模数据集上预训练的模型参数来初始化新任务的模型,可以加快模型的收敛速度。

需要注意的是,不同的参数初始化方法适用于不同的网络架构和激活函数。在实际应用中,需要根据具体情况选择适当的参数初始化方法。此外,还可以通过调整学习率和正则化等技巧来进一步优化训练过程。

✨ 2 零初始化(不常用)

🎈 2.1 理论

这里主要分析一下神经网络为什么不能将参数全部初始化为0
假设我们有下面的网络(为了简单,全部以线性函数计算):

第一层计算为:
在这里插入图片描述
第二层计算为:
在这里插入图片描述
以参数W11和W12的反向传播为例,梯度为:
在这里插入图片描述
因为都是0,则梯度为0,则参数更新停止。

✨ 3 Xavier初始化

第二节我们简单总结了为什么神经网络参数不能输出化为0,接下来我们讨论Xavier初始化。

🎃 3.1 介绍

在神经网络中,每个神经元的输入是由上一层的神经元输出和权重参数决定的。如果权重参数初始化过大,会导致输入值变得很大,从而使得激活函数的导数趋近于0,造成梯度消失问题。相反,如果权重参数初始化过小,会导致输入值变得很小,从而使得激活函数的导数趋近于1,造成梯度爆炸问题。

Xavier初始化通过根据网络层的输入和输出维度来合理地初始化权重参数,使得权重参数的方差保持在一个相对稳定的范围内。这样可以避免梯度消失和梯度爆炸问题,有助于提高网络的训练效果。

⛱️ 3.2 推导

这里我们以下列网络为例:
在这里插入图片描述

首先看前向传播
在这里插入图片描述
方差为(这里应用概率论相关计算公式,需要注意的是这里Xi经过归一化,E(Xi)=0)
在这里插入图片描述
如果Xi和Wi独立同分布,那么D(a1)的最终公式为
在这里插入图片描述
这里在这里插入图片描述代表着输入维度
而我们的目标是在这里插入图片描述,因此在这里插入图片描述


与上述计算方式一样,反向传播最终结果是在这里插入图片描述。只是这里,在这里插入图片描述是输出的维度大小。


但是在这里插入图片描述在这里插入图片描述一般情况下是不同的,因此,这里采取一种折中的方式
在这里插入图片描述,我们让在这里插入图片描述在区间[a, b]上均匀采样(均匀分布)
结合均匀分布方差公式在这里插入图片描述,解出Xavier初始化采样范围为在这里插入图片描述

🎈 3.3 构造

torch.nn.init.xavier_uniform_(tensor, a=0, b=1)
  1. tensor:需要填充的张量
  2. a:均匀分布的下界
  3. b:均匀分布的上界

☃️ 3.4 例子

w = torch.empty(3, 5)
nn.init.uniform_(w)

result:

tensor([[0.2116, 0.3085, 0.5448, 0.6113, 0.7697],[0.8300, 0.2938, 0.4597, 0.4698, 0.0624],[0.5034, 0.1166, 0.3133, 0.3615, 0.3757]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希结构(详解)

目录 哈希表 哈希表原理 散列函数 哈希冲突和处理的办法 哈希集合 哈希集合的实现 哈希映射 哈希映射的基本操作 哈希映射的实现 哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key)而直接进行访问的数据结构 …

1、QT新建工程

本章内容:本章建立一个简单的QT工程,并且对工程目录进行重新管理,再进行windows端打包部署,方便开发 一、建立工程 创建windows UI应用程序工程 到此,工程就已经建立完毕能正常运行了… 二、工程目录重新管…

lvs + keepalived

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器&#x…

ES(1)简介和安装

文章目录 简介倒排索引 安装 简介 ES是面向文档型数据库,一条数据在这里就是一个文档。 和关系型数据库大致关系如下: ES7.x中废除掉Type(表)的概念 倒排索引 要知道什么是倒排索引,就要先知道什么是正排索引 idcontent100…

Django 分布式路由

简介: Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由的配置文件可以配置成做请求的分发(分布式请求处理,分发到子路由而不是具体的视图函数)。具体的请求可以由各自的应用来处理。 步骤…

(vue)整个页面添加背景视频

(vue)整个页面添加背景视频 App.vue <template><div id"app" :class"[platform]"><video src"./assets/images/top/bg-video-711.mp4" autoplay muted loop class"bg"></video><router-view /></di…

校园网WiFi IPv6免流上网

ipv6的介绍 IPv6是国际协议的最新版本&#xff0c;用它来取代IPv4主要是为了解决IPv4网络地址枯竭的问题&#xff0c;也在其他很多方面对IPv4有所改进&#xff0c;比如网络的速度和安全性。 IPv4是一个32位的地址&#xff0c;随着用户的增加在2011年国家报道说IPv4的网络地址即…

QT开发技巧之嵌入式linux QT的QCombobox显示空白的问题

1.问题 开发平台&#xff1a;imx6ull qt版本&#xff1a;5.12.9 在嵌入式linux上运行的qt&#xff0c;QCombobox显示空白&#xff0c;不能显示其中的文本内容 2.解决办法 选中QCombobox&#xff0c;在属性栏中将foucsPolicy由WheelFocus改成NoFocus就好了

Spring Boot集成ElasticsearchRepository

Spring Boot集成ElasticsearchRepository 在上文springboot操作elasticsearch(简易版&#xff09;中&#xff0c;我们使用了elasticsearchRestTemplate操作索引及数据&#xff0c;本文主要是介绍elasic媲美数据库连接框架hibernate的数仓ElasticsearchRepository 在本文中&…

scrapy ---分布式爬虫

导模块 pip install scrapy-redis 原来scrapy的Scheduler维护的是本机的任务队列&#xff08;待爬取的地址&#xff09;本机的去重队列&#xff08;放在集合中&#xff09;---》在本机内存中 如果把scrapy项目&#xff0c;部署到多台机器上&#xff0c;多台机器爬取的内容是重…

Win10电脑开机PIN码怎么取消?

有的用户稀里糊涂的设置了PIN码之后&#xff0c;在开机时发现多了个PIN码&#xff0c;但又不知道电脑PIN码是什么意思&#xff0c;也不清楚开机PIN码怎么取消。您可以通过阅读以下内容&#xff0c;以了解什么是PIN以及如何取消PIN码。 PIN码是一种快捷登录密码方式&#xff0c;…

云计算的学习(六)

六、云计算的发展趋势 1.云计算相关领域介绍 1.1物联网 物联网来源于互联网&#xff0c;是万物互联的结果&#xff0c;是人和物、物和物之间产生通信和交互。 物联网主要技术&#xff1a; RFID技术&#xff08;射频识别技术&#xff09;传感器技术嵌入式系统技术 1.2大数据…

OpenCV - 图片增加透明通道,图片合并透明通道

1 为图像增加透明通道 一般人像抠图相关的AI模型会输出一个Mask图&#xff0c;这个Mask图就是我们需要的可以将人物抠出来的Alpha通道信息&#xff0c;我们需要将这个Mask图附加到原始图片上&#xff0c;从BGR图片转成BGRA图片或者从RGB图片转成RGBA图片。 如果使用OpenCV进行…

Matplotlib.pyplot接口汇总

Matplotlib 中的 pyplot 模块是一个类似命令风格的函数集合&#xff0c;这使得 Matplotlib 的工作模式和 MATLAB 相似。 pyplot 模块提供了可以用来绘图的各种函数&#xff0c;比如创建一个画布&#xff0c;在画布中创建一个绘图区域&#xff0c;或是在绘图区域添加一些线、标签…

win系统电脑在线打开sketch文件的方法

自Sketch诞生以来&#xff0c;只有Mac版本。Windows计算机如何在线打开Sketch文件&#xff1f; 即时设计已经解决了你遇到的大部分问题&#xff0c;不占用内存也是免费的。 您可以使用此软件直接在线打开Sketch文件&#xff0c;完整预览并导出CSS、SVG、PNG等&#xff0c;还具…

【工具推荐】企业微信、企业飞书接口调用工具

github地址: GitHub - fasnow/idebug: 企业微信、企业飞书接口调用工具。 简介 企业微信、企业飞书接口调用工具。 使用方法 wechat模块 使用use wechat 选择模块。 首先设置corpid和corpsecret&#xff0c;如有需要可以设置代理&#xff0c;之后再执行run命令。 导出通信…

微信小程序设置底部导航栏

微信小程序设置底部导航栏 1、前言2、图标准备3、小程序tabbar设置 1、前言 我们先来看下效果图&#xff1a; 注意&#xff1a; 导航栏数量最多5个&#xff0c;最少两个。 2、图标准备 阿里图标库 http://www.iconfont.cn/collections/show/29 我们进入该网站&#xff0c;选…

在SpringBoot中对RabbitMQ三种使用方式

基于API的方式 1.使用AmqpAdmin定制消息发送组件 Autowiredprivate AmqpAdmin amqpAdmin;Testpublic void amqpAdmin(){//1.定义fanout类型的交换器amqpAdmin.declareExchange(new FanoutExchange("fanout_exchange"));//2.定义两个默认持久化队列,分别处理email和sm…

云事业群CTO线技术晋升考核机试题-分布式专题-F 分布式服务链路动态追踪

2023年&#xff08;Q3财年&#xff09;技术部门CTO线技术人员晋升考核机试题 分布式篇-F 分布式服务链路动态追踪 *参考答案* 出题人&#xff1a;湖北TL田超凡答案制定&#xff1a;湖北TL田超凡 *****试卷启用前绝密**** 1 分布式服务链路动态追踪产生的背景 答&#xff…

MySQL的约束类型、数据库操作、数据表操作大全(简述)

目录 一.数据库的操作语法 二.MySQL数据库约束 三.数据类型 四.数据表操作 作者简介&#xff1a; tq02&#xff0c;一个想成为编程高手的梦中人作者主页&#xff1a; tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主学习专栏&#xff1a; &#x1f3a5; MySQL基础 …