神经网络基础-神经网络补充概念-40-神经网络权重的初始化

概念

神经网络权重的初始化是深度学习中的重要步骤,良好的权重初始化可以加速模型的训练收敛,提高模型的性能和稳定性。以下是一些常用的权重初始化方法:

零初始化(Zero Initialization):将权重初始化为零。然而,这种方法不太适合深层神经网络,因为它会导致所有神经元在同一时间具有相同的输出,从而破坏了网络的对称性。因此,在实践中很少使用纯粹的零初始化。

随机初始化(Random Initialization):将权重初始化为随机值。常见的随机初始化方法包括:

均匀分布(Uniform Distribution):在某个范围内随机采样权重值,如 [ − a , a ] [-a, a] [a,a]
正态分布(Normal Distribution):从均值为 0、标准差为 σ \sigma σ 的正态分布中随机采样权重值。
随机初始化的目的是打破权重的对称性,使不同神经元可以学到不同的特征。

Xavier 初始化(Glorot Initialization):Xavier 初始化是一种常用的权重初始化方法,特别适用于 sigmoid 和 tanh 等激活函数。对于具有 n n n 个输入和 m m m 个输出的全连接层,Xavier 初始化从均匀分布 U [ − 6 n + m , 6 n + m ] U[-\sqrt{\frac{6}{n+m}}, \sqrt{\frac{6}{n+m}}] U[n+m6 ,n+m6 ] 中采样权重值。

He 初始化:He 初始化是适用于 ReLU 激活函数的权重初始化方法。对于具有 n n n 个输入的全连接层,He 初始化从正态分布 N ( 0 , 2 n ) N(0, \sqrt{\frac{2}{n}}) N(0,n2 ) 中采样权重值。

LeCun 初始化:LeCun 初始化是适用于 tanh 激活函数的权重初始化方法。对于具有 n n n 个输入的全连接层,LeCun 初始化从均匀分布 U [ − 1 n , 1 n ] U[-\sqrt{\frac{1}{n}}, \sqrt{\frac{1}{n}}] U[n1 ,n1 ] 中采样权重值。

Orthogonal 初始化:Orthogonal 初始化是将权重矩阵初始化为正交矩阵,有助于防止梯度消失和梯度爆炸。这种方法特别适用于循环神经网络(RNN)等架构。

代码实现

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers# 生成示例数据
X = np.random.rand(100, 10)# 定义模型
def build_model(initializer):model = keras.Sequential([layers.Input(shape=(X.shape[1],)),layers.Dense(64, activation='relu', kernel_initializer=initializer),layers.Dense(32, activation='relu', kernel_initializer=initializer),layers.Dense(1, activation='sigmoid', kernel_initializer=initializer)])return model# 随机初始化(均匀分布)
random_initializer = tf.keras.initializers.RandomUniform(minval=-0.05, maxval=0.05)
model_random = build_model(random_initializer)
model_random.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# Xavier 初始化
xavier_initializer = tf.keras.initializers.GlorotUniform()
model_xavier = build_model(xavier_initializer)
model_xavier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# He 初始化
he_initializer = tf.keras.initializers.he_normal()
model_he = build_model(he_initializer)
model_he.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# LeCun 初始化
lecun_initializer = tf.keras.initializers.lecun_uniform()
model_lecun = build_model(lecun_initializer)
model_lecun.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# Orthogonal 初始化
orthogonal_initializer = tf.keras.initializers.orthogonal()
model_orthogonal = build_model(orthogonal_initializer)
model_orthogonal.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# 打印各种初始化方法的模型结构
print("Random Initialization:")
model_random.summary()print("\nXavier Initialization:")
model_xavier.summary()print("\nHe Initialization:")
model_he.summary()print("\nLeCun Initialization:")
model_lecun.summary()print("\nOrthogonal Initialization:")
model_orthogonal.summary()

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

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

相关文章

代码随想录第27天|39. 组合总和,40.组合总和II,131.分割回文串

39. 组合总和 分析这道题的搜索过程如下: 因为这道题没有限制要搜索几层,所以可以一直搜索直到sumtarget或者sum>target就return 回溯三部曲 1.递归函数参数 本题还需要startIndex来控制for循环的起始位置,对于组合问题,什么…

Servlet+JDBC实战开发书店项目讲解第13讲:库存管理功能

ServletJDBC实战开发书店项目讲解第13讲:库存管理功能 在第13讲中,我们将讲解如何实现书店项目中的库存管理功能。该功能包括图书的添加、编辑、删除和查询等核心功能。下面是实现该功能的主要思路: 显示库存列表: 创建一个管理页…

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础…

Unity——各种特效的基本使用方法

特效是游戏制作不可或缺的一环,作为游戏开发者最重要的工作就是将特效添加到游戏中,并在合适的时机、合适的位置将特效播放出来,同时还要注意特效的管理和销毁。 某些种类的特效,如动效、贴花,还要编写脚本代码以实现…

在ARM服务器上一键安装Proxmox VE(以在Oracle Cloud VPS上为例)(甲骨文)

前言 如题,具体用到的说明文档如下 virt.spiritlhl.net 具体流程 首先是按照说明,先得看看自己的服务器符不符合安装 Proxmox VE的条件 https://virt.spiritlhl.net/guide/pve_precheck.html#%E5%90%84%E7%A7%8D%E8%A6%81%E6%B1%82 有提到硬件和软…

CSS 选择器

前言 基础选择器 以下是几种常见的基础选择器。 标签选择器&#xff1a;通过HTML标签名称选择元素。 例如&#xff1a; p {color: red; } 上述样式规则将选择所有<p>标签 &#xff0c;并将其文字颜色设置为红色。 类选择器&#xff1a;通过类名选择元素。使用类选择…

65 | 增长模型案例

增长模型代表了一种综合性的方法论,旨在通过深入了解用户行为、市场趋势和数据洞察,来指导企业制定有效的增长战略。这种方法突破了传统的经验主义,将决策过程建立在数据驱动和实验的基础之上。增长模型不仅仅是一种理论,更是一种实际操作的框架,帮助企业在各个层面实现业…

5.1 webrtc线程模型

那从今天开始呢&#xff1f;我们来了解一下y8 tc线程相关的内容&#xff0c;那在开始之前呢&#xff1f;我们先来看一下&#xff0c;我们本章都要讲解哪些知识&#xff1f; 那第一个呢&#xff1f;是线程的基础知识&#xff0c;这块内容呢&#xff1f;主要是为大家做一下回顾&a…

课程项目设计--spring security--用户管理功能--宿舍管理系统--springboot后端

写在前面&#xff1a; 还要实习&#xff0c;每次时间好少呀&#xff0c;进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …

电脑上安装,多版本node

手上有一个vue3的项目&#xff0c;sass配置如下图所示&#xff1a; 安装了Python3.10和node 16.14.0&#xff0c;项目能正常install 跟run。 因工作需要&#xff0c;收上有一个vue2的项目&#xff0c;sass配置如下图所示&#xff1a; 执行npm intsall 的时候一直报Python2找不…

2022年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数组逆序重放 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。 输入 输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。 输出 输出为一行:输出逆序后数组的整数,每两个整数之间…

深入浅出Pytorch函数——torch.nn.init.orthogonal_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…

Java云原生框架Quarkus初探

Java云原生框架Quarkus初探 Quarkus 介绍 Quarkus 是一个云原生&#xff0c;容器优先的Java应用框架&#xff0c;它号称是超音速和亚原子的框架&#xff0c;主要特点是构建速度、启动速度快和占用资源少等特点。它为OpenJDK HotSpot和GraalVM量身定制&#xff0c; 根据Java库和…

常用消息中间件介绍

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

Nevron 3DChart Crack,可视化界面在运行时可用

Nevron 3DChart Crack,可视化界面在运行时可用 3DChart使用OpenGL 3D图形引擎创建复杂的2D和3D图表&#xff0c;这些图表可以包含静态或动画图像。3DChart包括一个用于生成图表模板的独立应用程序和一个ASP服务器配置实用程序。该组件还包括一个专门设计用于与3DChart集成的工具…

java版本企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发

java版本企业电子招标采购系统源码Spring Cloud Spring Boot 二次开发 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草…

设计模式十九:备忘录模式(Memento Pattern)

备忘录模式是一种行为型设计模式&#xff0c;它允许对象在不暴露其内部状态的情况下捕获和恢复其状态。该模式的主要目标是在不破坏封装性的前提下&#xff0c;实现对象状态的备份和恢复。备忘录模式常用于需要保存对象历史状态、撤销操作或者实现快照功能的情况。 备忘录模式…

Scratch 游戏 之 随机大地图生成教程

在很多生存 / 沙盒类游戏中&#xff0c;地图往往是随机生成的&#xff0c;例如&#xff1a;饥荒、我的世界等。那我们该如何在scratch中实现这一点呢&#xff1f; 在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。 我们可以先将克隆体设置为方形的&#x…

CentOS7安装部署Java11

文章目录 CentOS7安装部署JDK11一、前言二、正文1.卸载 Open JDK2.安装JDK11 CentOS7安装部署JDK11 一、前言 Linux 发行版&#xff1a;CentOS-7-x86_64-DVD-1804.isoJDK 版本&#xff1a;Java SE Development Kit 11.0.19 Java Archive&#xff1a;https://www.oracle.com/j…