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

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

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

神经网络参数的初始化是很重要的,不同的初始化方法可能导致模型性能的差异。随机初始化是最常用的初始方法之一,以下是一些随机初始化方法的示例和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 np

def 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.mfbz.cn/a/9820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023/4/6总结

题解 Problem - A - Codeforces 1.这道题很简单,找出将当前数字放入字符串的最大值。 2.分情况讨论,有俩种情况,一种是大于等于数字d,那么这个数字d需要插入到最后字符串的位置。否则这个数字需要插入到第一次比它小的位置。 …

2023年4月的编程语言排行榜,有你中意的开发语言吗?

编程世界变幻莫测,编程语言也是层出不穷,每隔一段时间就有新的风口出现。2023年的风口非人工智能莫属,人工智能领域中不可获取的编程语言就是Python,作为在算法、数据方面有独特优势的编程语言,从去年开始就展现了它不…

算法学习|动态规划 LeetCode 392.判断子序列 、115.不同的子序列

动态规划一、判断子序列思路实现代码二、不同的子序列思路实现代码(还是蛮开心的) 一、判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相…

腾讯云8核16G18M轻量服务器CPU带宽流量性能测评

腾讯云轻量应用服务器8核16G18M带宽,18M公网带宽下载速度峰值可达2304KB/秒,相当于2.25M/s,系统盘为270GB SSD盘,3500GB月流量,折合每天116GB流量。腾讯云百科分享腾讯云轻量服务器8核16G18M配置、CPU型号、公网带宽月…

【Pytorch】搭建网络模型的实战

【Pytorch】搭建网络模型的实战CIFAR10 model structure搭建网络使用Sequential进行搭建网络模型使用tensorboard查看网络结构对CIFAR10数据集进行分类,根据图片内容识别这是哪一类 CIFAR10 model structure 输入input:3通道的32 x 32 图片卷积操作的通道数不变 那…

应用信息资源管理(张士玉、董焱)——第一章 总论

第一章 总论 1.1 信息社会 1.1.1 信息社会的形成 信息社会是指以信息技术为基础,信息产业为支撑,信息化为主要特征的社会形态。其形成经历了以下几个阶段: 信息化初期:20世纪60年代至70年代,电子计算机的出现和发展…

人工智能会取代人工翻译吗?

当今社会正处于语言和技术高速发展的阶段,因此语言和技术的碰撞是不可避免的——甚至有些人说这种碰撞已经发生了,我们只是在等待尘埃落定。数字化、物联网、人工智能和机器学习,以及更进一步——智能手机、语音识别,以及互联网和…

机器视觉检测技术在工业零部件的应用

众所周知,在工业生产中,传统的检测技术需要大量的检测工作者,不仅影响生产效率,而且带来不可靠的因素。 视觉检测技术克服了传统检测技术的缺点,确保了检测的安全性。 可靠性和自动化程度高,已成为当前检测…

第六章 信息资源安全管理

信息资源安全管理内涵 信息在开发利用过程中面临的问题: 可用性;合法用户对信息的使用不会被不正当拒绝保密性也称机密性;保证机密信息不被窃取,或窃取者不能了解信息的真实含义认证性也称真实性;对信息的来源进行判断…

zabbix创建自定义监控模板

目录 第一章先行配置zabbix 第二章配置自定义 2.1.案列:自定义监控客户端服务器登录的人数需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息 2.2.在 Web 页面创建自定义监控项模板 2.3.zabbix 自动发现与自动注册 总结 自定义监控…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 : https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具,它不仅能管理包,还能隔…

龙蜥 Anolis 8.x + Vmware的安装与网络配置 CentOS8 网络配置详细教程

前言 配置和安装可以看下面这两篇文章的 写的很详细https://cnxiaobai.com/articles/2021/04/21/1619011285612.htmlhttps://cnxiaobai.com/articles/2021/10/21/1634800698273.html#b3_solo_h3_1网络配置方面有不同的方面 我在下面进行了修改这个操作系统 很少资源 弄了好久才…

C++轻量级Web服务器TinyWebServer源码分析之threadpool篇

文章目录threadpool线程池篇简介一、线程池的创建与回收二、向请求队列添加请求任务三、worker函数内部访问run函数,完成线程处理四、run函数执行任务原文链接threadpool线程池篇简介 空间换时间,浪费服务器的硬件资源,换取运行效率. 池是一组资源的集合,这组资源…

天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)

前言 近年来,随着信息化进程的不断深入,人们对于信息的获取和处理需求越来越高。而其中,天气查询API是一个非常重要的服务,它能够帮助人们快速获取所在位置的天气情况,同时也为各类应用提供了必要的气象数据支持。 本…

vue3笔记

目录 1.vue3带来了什么 1.1源码的升级 1.2拥抱TypeScript 1.3新的特性 2.创建Vue3.0工程 2.1使用vue-cli创建 2.2使用vite创建 3.创建vue3.0工程 3.1 main.js 3.2 App.vue 4.安装开发者工具 5.常用的 Composition API 5.1拉开序幕的setup 6.ref函数 7.reactive函…

全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....

一、单选题(共25题,共50分) 1. 小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是?( ) A.小猫一直在左右移动,嘴里一直说着“抓到了”。 B.小猫会碰到球,然后停止。 C.小猫一直在左右移动,嘴里一直说着“别跑” D.小猫会碰到球,…

全新适配鸿蒙生态,Cocos引擎助力3D应用开发

一、适配HarmonyOS背景 HarmonyOS 3.1版本自发布以来,备受广大开发者的好评,同时也吸引了鸿蒙生态众多伙伴的青睐。 鸿蒙生态所强调的智慧全场景、多端联动与跨设备流转等能力,与Cocos所具有的跨平台、低功耗、高性能三大核心特点不谋而合。C…

【Python】字符串 ④ ( Python 浮点数精度控制 | 控制数字的宽度和精度 )

文章目录一、Python 字符串格式化1、浮点数精度问题2、浮点数精度控制一、Python 字符串格式化 1、浮点数精度问题 在上一篇博客 【Python】字符串 ③ ( Python 字符串格式化 | 单个占位符 | 多个占位符 | 不同类型的占位符 ) 中 , 拼接字符串中 , float 浮点类型出现如下情况 …

国内怎么玩chatGPT-chatGPT中文版入口

ChatGPT国内可用版 目前,国内有一些可用的ChatGPT模型和平台,可以方便用户使用。以下是一些代表性的中文ChatGPT模型和平台: THU Transformer: 清华大学自然语言处理实验室开发的中文自然语言处理模型,基于GPT模型架构进行研发&a…

WPS卡慢解决方法

WPS卡顿,很慢怎么解决? keywords:wps很卡很慢怎么办、wps很卡什么原因、wps很卡怎么解决、wps很占内存吗、wps很慢、wps打开文件很慢很卡怎么办、wps打开文件很慢很卡 说起来真的很搞笑,你可以试试把下面这个功能给勾选,速度X10…