Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深度学习: 参数初始化

深度学习: 参数初始化

作者头像
JNingWei
发布于 2018-09-27 08:15:13
发布于 2018-09-27 08:15:13
1.5K00
代码可运行
举报
文章被收录于专栏:JNing的专栏JNing的专栏
运行总次数:0
代码可运行

Introduction

好的开始是成功的一半。 为了让你的模型跑赢在起跑线 ε=ε=ε=(~ ̄▽ ̄)~ ,请慎重对待参数初始化。

API

TensorFlow中自带关于参数初始化的API,具体使用见 tensorflow: variable初始化

全零初始化 (Zero Initialization)

将网络中 所有参数 初始化为 0 。

如果所有的参数都是0,那么所有神经元的输出都将是相同的,那在back propagation的时候,gradient相同,weight update也相同。同一层内所有神经元的行为也是相同的。

这显然不可接受。

随机初始化 (Random Initialization)

将参数值(通过高斯分布或均匀分布)随机初始化为 接近0的 一个很小的随机数(有正有负),从而使对称失效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W = tf.Variable(np.random.randn(node_in, node_out)) * 0.001

Note

  • node_innode_out 表示 输入神经元个数输出神经元个数
  • 其中,np.random.randn(node_in, node_out) 输出 服从标准正态分布node_in × node_out矩阵;
  • 控制因子:0.001 ,保证参数期望接近0;
  • 一旦随机分布选择不当,就会导致网络优化陷入困境。

Xavier初始化 (Xavier Initialization)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W = ( tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in) ) * 0.001

Note

  • 加上了 方差规范化/ np.sqrt(node_in) ,维持了 输入、输出数据分布方差一致性,从而更快地收敛。

He初始化 (He Initialization)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W = ( tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in/2) ) * 0.001

Note

  • 考虑到 非线性映射 (relu) 函数 的影响, 将 方差规范化分母 修改为 / np.sqrt(node_in/2) ,能让Relu网络更快地收敛。

迁移学习初始化 (Pre-train Initialization)

预训练模型的参数 作为新任务上的初始化参数。

数据敏感初始化

根据自身任务数据集而特别定制的参数初始化方法。


[1] 聊一聊深度学习的weight initialization [2] 深度学习之参数初始化策略

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
参数初始化不当导致训练不稳定
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在这篇文章中,我们将深入探讨模型参数初始化不当导致训练不稳定的问题。参数初始化在模型训练过程中起着至关重要的作用,它不仅影响模型的收敛速度,还直接关系到模型最终的性能。通过本文,你将了解到常见的参数初始化方法及其优缺点,学会如何选择和应用合适的初始化策略,确保模型的稳定训练。📈
默 语
2024/11/22
1440
TensorFlow从0到1 | 第十五章 重新思考神经网络初始化
上一篇14 交叉熵损失函数——克服学习缓慢从最优化算法层面入手,将二次的均方误差(MSE)更换为交叉熵作为损失函数,避免了当出现“严重错误”时导致的学习缓慢。 本篇引入1/sqrt(nin)权重初始化方法,从另一个层面——参数初始化(神经网络调教的5个层面归纳在13 AI驯兽师:神经网络调教综述)入手改善网络的学习速度。 相比之前采用的标准正态分布初始化,1/sqrt(nin)权重初始化不仅明显的加快了学习速度,而且单纯性(其他任何参数不变)的提升了测试集识别精度1~2个百分点。 理解了1/sqrt(nin
用户1332428
2018/03/08
7300
TensorFlow从0到1 | 第十五章  重新思考神经网络初始化
【TensorFlow篇】--DNN初始和应用
正向传播:在开始的每一层上都有一个参数值w,初始的时候是随机的,前向带入的是每一个样本值。
LhWorld哥陪你聊算法
2018/09/13
8240
【TensorFlow篇】--DNN初始和应用
一文详解深度学习参数初始化(weights initializer)策略
前言:深度学习的初始化参数指的是在网络训练之前,对各个节点的权重和偏置进行初始化的过程,很多时候我们以为这个初始化是无关紧要的,不需要什么讲究,但是实际上,一个参数的初始化关系到网络能否训练出好的结果或者是以多快的速度收敛,这都是至关重要的,有时候因为参数初始化的缘故,甚至得不到好的训练结果。本文就来讨论一下参数初始化到底有什么讲究以及常见的参数初始化的一些策略方法。阅读本文需要神经网络相关背景,能够理解误差反向传播算法的实现过程。
小草AI
2019/05/29
13.9K0
神经网络参数初始化方法
神经网络的训练过程中的参数学习是基于梯度下降法进行优化的。梯度下降法需要在开始训练时给每一个参数赋一个初始值。这个初始值的选取十分关键。一般我们希望数据和参数的均值都为 0,输入和输出数据的方差一致。在实际应用中,参数服从高斯分布或者均匀分布都是比较有效的初始化方式。  所以理想的网络参数初始化是很重要的,但是现在框架都定义了很多参数初始化方式,可以直接调用,比如tensorflow的变量初始化方式如下:  initializer:是变量初始化的方式,初始化的方式有以下几种:
嵌入式视觉
2022/09/05
2K0
神经网络参数初始化方法
【DL碎片1】神经网络参数初始化的学问
从【DL笔记1】到【DL笔记N】,以及【DL碎片】系列,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结而来。从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现自己的小而有趣的想法......我相信,一路看下来,我们可以感受到深度学习的无穷的乐趣,并有兴趣和激情继续钻研学习。 正所谓 Learning by teaching,写下一篇篇笔记的同时,我也收获了更多深刻的体会,希望大家可以和我一同进步,共同享受AI无穷的乐趣。
beyondGuo
2018/10/25
4990
【DL碎片1】神经网络参数初始化的学问
tensorflow实战:BP神经网络预测信用指数
文章目录 tensorflow tensorflow # -*- coding:utf-8 -*- # /usr/bin/python ''' Author:Yan Errol Email:2681506@gmail.com Wechat:qq260187357 Date:2019-04-23--08:12 Describe: BP网络的设计 ''' import numpy as np import matplotlib.pyplot as plt import tensorflow as tf #
AI拉呱
2021/01/14
5530
TensorFlow从0到1 - 15 - 重新思考神经网络初始化
上一篇14 交叉熵损失函数——克服学习缓慢从最优化算法层面入手,将二次的均方误差(MSE)更换为交叉熵作为损失函数,避免了当出现“严重错误”时导致的学习缓慢。 本篇引入1/sqrt(nin)权重初始化方法,从另一个层面——参数初始化(神经网络调教的5个层面归纳在13 AI驯兽师:神经网络调教综述)入手改善网络的学习速度。 相比之前采用的标准正态分布初始化,1/sqrt(nin)权重初始化不仅明显的加快了学习速度,而且单纯性(其他任何参数不变)的提升了测试集识别精度1~2个百分点。 理解了1/sqrt(ni
袁承兴
2018/04/11
1.1K0
神经网络权重初始化问题
之前看Andrew大神的视频有介绍到神经网络权重需要随机初始化而不是全初始化为0的问题,其真正深层次的含义没有弄明白,所以结合一些资料(cs231n课程)希望能让自己之后再想到这个问题的时候能够快速地明白过来。 另外这篇文章其实是一篇译文,所以翻译不是很确定的地方也将原文中的英文语句复制在句后,如果有更合适的翻译也请留言告知一下,谢谢! 参考文献: CS231n Convolutional Neural Networks for Visual Recognition 权重初始化 我们已经知道了
marsggbo
2018/01/23
1.9K0
斯坦福CS231n - CNN for Visual Recognition(6)-lecture5预处理、正则化、损失函数
关于数据预处理我们有3种常用的方式,假设数据矩阵XX,假设其尺寸是[N,D][N ,D](NN是数据样本的数量,DD是数据的维度)。
李智
2018/08/03
8880
斯坦福CS231n - CNN for Visual Recognition(6)-lecture5预处理、正则化、损失函数
深度学习中如何选择合适的初始化权重
不同的神经网络权重初始值会导致不同的神经网络训练结果,一个良好初始化权重可以对于神经网络的训练带来很大帮助,比如加速梯度下降(Gradient Descent)的收敛;增加梯度下降(Gradient Descent)收敛到低训练误差(Trainning Error)的概率;避免梯度消失或梯度爆炸等。
YoungTimes
2022/04/28
1.6K0
深度学习中如何选择合适的初始化权重
深度学习 | Why and How:神经网络中的权重初始化
前言 神经网络中的权重(weight)初始化是个常常被忽略的问题。 最近在手写一个Python的神经网络库(GitHub:hamaa——https://github.com/monitor1379/hamaa),刚开始为了测试代码是否写对,搭建了一个2->4->2的单隐层神经网络来拟合异或运算,拟合结果十分完美。但是在做MNIST手写数字识别,将网络扩展到了784->100->10时,发现损失函数一直不下降,训练准确率一直停留在10%左右(和随机猜的命中概率一样嘛)。 一直以为是back propagat
用户1332428
2018/03/09
1.3K0
深度学习 | Why and How:神经网络中的权重初始化
权重初始化的几个方法
其中第一步 权重的初始化 对模型的训练速度和准确性起着重要的作用,所以需要正确地进行初始化。
杨熹
2018/10/09
1.3K0
权重初始化的几个方法
关于网络初始化不得不知的事
作者:时晴 大家有遇到过自己网络不work的情况吗?很多时候我们都是直接使用开源代码,修改下输入数据就直接能work,但是如果让你从0开始写一个网络,会不会出现不收敛的情况呢?作为一个优秀的炼丹师,有
炼丹笔记
2021/11/10
3750
谷歌工程师:聊一聊深度学习的weight initialization
编者按:本文作者夏飞,清华大学计算机软件学士,卡内基梅隆大学人工智能硕士。现为谷歌软件工程师。作者授权雷锋网 AI 研习社发布。 █ TLDR (or the take-away) Weight In
AI研习社
2018/03/29
1.2K0
谷歌工程师:聊一聊深度学习的weight initialization
深度神经网络初始化、正则化、梯度校验
这里忽略了常数项b。为了让z不会过大或者过小,思路是让w与n有关,且n越大,w应该越小才好。这样能够保证z不会过大。一种方法是在初始化w时,令其方差为
lovelife110
2021/01/14
5320
深度神经网络初始化、正则化、梯度校验
深度学习笔记-深度学习实战
深度学习实战 前面总结了吴恩达的深度学习课程笔记,博主把后续的深度学习课程笔记总结记录到个人博客里面,以供学习和交流使用。今天总结的是深度学习的超参数调试、正则化和梯度检验。 改善神经网络 依次通过数
吕海峰
2018/06/13
1.5K0
吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
在构建一个神经网络的时候我们往往需要设计很多参数,如:layers,learning rates ,acivation functions,hidden units, 而这些参数我们往往不能一次性就能设计到成为了最佳的参数,往往是我们自己有一些想法,然后写出代码,开始实验,然后开始调整,再次更改代码实验,就这样一步步调整,得到最佳的参数.使神经网络的性能最佳.
Dar_Alpha
2018/09/03
6010
吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
【干货】深度学习最佳实践之权重初始化
【导读】深度学习中有很多简单的技巧能够使我们在训练模型的时候获得最佳实践,比如权重初始化、正则化、学习率等。对于深度学习初学者来说,这些技巧往往是非常有用的。本文主要介绍深度学习中权重和偏差初始化以及
WZEARW
2018/04/13
1.1K0
【干货】深度学习最佳实践之权重初始化
【译】关于深度神经网络必须知道的一些技巧(上)
本文介绍了神经网络在计算机视觉领域的应用,特别是在图像分类、目标检测和图像生成任务中取得了显著的成果。这些成果得益于神经网络架构和训练方法的改进,以及更大、更多样化的数据集。同时,还讨论了神经网络在计算机视觉领域中的不平衡问题,以及如何解决这些问题。
MelonTeam
2018/01/04
1.7K0
【译】关于深度神经网络必须知道的一些技巧(上)
推荐阅读
相关推荐
参数初始化不当导致训练不稳定
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验