神经网络参数初始化方法 | 深度学习

news/2024/11/15 2:30:20/

为什么需要初始化神经网络参数?

神经网络参数的初始值会影响网络的拟合能力和优化效果,如果初始值过大或过小,可能会使得模型的梯度爆炸或梯度消失,导致网络无法收敛或训练效率低下。因此,合适的参数初始化可以提高模型的收敛速度和泛化能力。

神经网络参数的初始化是很重要的,不同的初始化方法可能导致模型性能的差异。随机初始化是最常用的初始方法之一,以下是一些随机初始化方法的示例和Python实现:

1. 均匀分布随机初始化

此方法将参数随机初始化为在指定区间内服从均匀分布的随机值,最常用的区间是[-r, r],其中r是一个较小的正数。

Python实现:

import numpy as np# 初始化大小为(n,m)的权重矩阵,值在[-r, r]之间随机分布
def uniform_init(n, m, r=0.1):return np.random.uniform(-r, r, (n, m))

2. 正态分布随机初始化

此方法将参数随机初始化为服从指定均值和标准差的正态分布的随机值。

Python实现:

# 初始化大小为(n,m)的权重矩阵,值在以mu为均值,sigma为标准差的正态分布下随机分布
def normal_init(n, m, mu=0, sigma=0.1):return np.random.normal(mu, sigma, (n, m))

3. Xavier初始化

Xavier初始化是一种针对于某些激活函数(如sigmoid)的特殊初始化方法,其目的是为了使得每一层输入的方差大致相等。

Python实现:

# Xavier初始化方法
def xavier_init(n, m):return np.random.normal(loc=0, scale=np.sqrt(1/(n+m)), size=(n, m))

4. He初始化

He初始化是一种针对于ReLU激活函数的特殊初始化方法,其目的也是为了使得每一层输入的方差大致相等。

Python实现:

# He初始化方法
def he_init(n, m):return np.random.normal(loc=0, scale=np.sqrt(2/n), size=(n, m))

需要注意的是,需要根据不同神经网络模型及任务选择不同的初始化方法。

最常用的随机初始化方法是将权重值随机分布在一个范围内,例如[-0.05,0.05]。下面是一个使用Python实现的具体例子:

import random
import numpy as npdef random_init(input_size, output_size):"""input_size: 输入层节点数output_size: 输出层节点数"""epsilon = 0.12   # 控制参数大小的常量W = np.zeros((output_size, input_size+1))    # 初始化权重矩阵for i in range(output_size):for j in range(input_size+1):W[i][j] = random.uniform(-epsilon, epsilon)return W

在上述代码中,我们使用numpy库创建一个所有元素均为0的矩阵,再使用random库中的uniform函数对其进行随机初始化,并控制参数范围大小的常量为0.12。

使用该函数进行随机初始化可以如下操作:

input_size = 10
output_size = 5
W = random_init(input_size, output_size)
print(W)

运行上述代码,我们可以得到类似如下的随机初始化矩阵:

array([[-0.02495211, -0.0007012 ,  0.10966169,  0.07131803,  0.0484302 ,-0.02036323, -0.011586  ,  0.02416831, -0.02064493, -0.03099039,0.03850217],[ 0.07439307,  0.04935092,  0.02583894, -0.02417219, -0.09880189,-0.10778684, -0.10198968, -0.06520752,  0.06740405, -0.01701554,0.03224939],[ 0.06631535, -0.02985056, -0.02027357, -0.11409398, -0.0215264 ,-0.02061788, -0.06854681, -0.07878375, -0.06611581,  0.02737992,0.04766446],[-0.11833036, -0.0853118 ,  0.00874644, -0.04011481, -0.05558958,-0.10986539, -0.06506781,  0.11635285, -0.1089822 ,  0.04405787,0.0207572 ],[ 0.06825568, -0.07798144, -0.10010684, -0.08485594, -0.10091781,0.02585377, -0.08614961,  0.04342185,  0.05697245, -0.03684133,-0.06409202]])

http://www.ppmy.cn/news/46472.html

相关文章

[ARM+Linux] 基于全志h616外设开发笔记

修改用户密码 配置网络 nmcli dev wifi 命令扫描周围WIFI热点 nmcli dev wifi connect xxx password xxx 命令连接WiFi 查看ip地址的指令: ifconfig ip addr show wlan0 SSH登录 这是企业开发调试必用方式,比串口来说不用接线,前提是接入网络…

TCP/UDP协议 (详解)

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

Linux宝塔安装msyql服务,默认密码,允许远程登录问题解决

一、首先我在宝塔安装mysql服务是5.7 1.1MySQL数据库5.6之前(不包括)默认密码为空,用户不用输入密码,直接回车登陆 mysql -uroot -p password:(空) 1.2.MySQL数据库5.6之后(包括)默认密码是MySQL数据库随机…

2023年税务师事务所行业研究报告

第一章 行业发展概况 1.1 行业概况 税务师事务所是依法设立并承办法律、法规、规章规定的涉税服务和鉴证业务的社会中介机构。税务师事务所的组织形式为有限责任制税务师事务所和合伙制税务师事务所,以及国家税务总局规定的其他形式。税务师事务所应当依法纳税&am…

一分钟了解美国棒球体系·棒球1号位

美国棒球体系是一个庞大且复杂的体系,涵盖了从青少年到职业的各个层次。下面是美国棒球体系的主要组成部分: 1. 青少年棒球(Youth Baseball) 美国的青少年棒球体系包括各种地区和全国性的联盟,如Little League、Pony…

7个最新的时间序列分析库介绍和代码示例

时间序列分析包括检查随着时间推移收集的数据点,目的是确定可以为未来预测提供信息的模式和趋势。我们已经介绍过很多个时间序列分析库了,但是随着时间推移,新的库和更新也在不断的出现,所以本文将分享8个目前比较常用的&#xff…

【云原生】Kubernetes 中容器跨主机网络是怎么样的?

文章目录 前言什么是 FlannelFlannel 的后端实现有哪些UDPVXLANHost-gw 基于 Flannel UDP 模式的实现跨主通信UDP 模式案例实现基于 Flannel VXLAN 模式的跨主通信VXLAN 模式案例实现 总结 前言 在云原生领域,Kubernetes 已经成为了最主流的容器管理工具。Kubernet…

本地Pycharm连接远程服务器训练模型教程-yolov5为例

本篇文章解决的问题: 本地pycharm 与云服务器/实验室服务器进行远程连接跑实验训练、同步本地与云服务器的全部或者部分文件。 在这之前需要做的的工作: 1.服务器上已经创建好虚拟环境(不会的可以看下篇文章):使用云…