隐含层权重参数的初始化方式的对比实验
时间:2022-05-07
本文章向大家介绍隐含层权重参数的初始化方式的对比实验,主要内容包括全1或全0初始化、Uniform Distribution、Normal Distribution、Truncated Normal Distribution、结论、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
全1或全0初始化
全1或全0初始化的训练效果
After 858 Batches (2 Epochs):
Validation Accuracy
11.260% -- All Zeros
9.900% -- All Ones
Loss
2.300 -- All Zeros
372.644 -- All Ones
全1和全0的方式都不好,因为大家都一样,反向传播算法不知道更新哪一个
Uniform Distribution
Uniform Distribution的训练效果
After 858 Batches (2 Epochs):
Validation Accuracy
65.340% -- tf.random_uniform [0, 1)
Loss
64.356 -- tf.random_uniform [0, 1)
设置 UniformDistribution
权重的方式
通用的方法是,设置一个0左右的不太小的区间。
一个好的选择起点是从 $ y=frac1{sqrt{n}}$
公式选取 [−y,y]
,公式里的n是神经元输入的个数。
y的不同区间值的效果
After 858 Batches (2 Epochs):
Validation Accuracy
91.000% -- [-1, 1)
97.220% -- [-0.1, 0.1)
95.680% -- [-0.01, 0.01)
94.400% -- [-0.001, 0.001)
Loss
2.425 -- [-1, 1)
0.098 -- [-0.1, 0.1)
0.133 -- [-0.01, 0.01)
0.190 -- [-0.001, 0.001)
如果设置的太小会有问题
Normal Distribution
Normal Distribution的训练效果
After 858 Batches (2 Epochs):
Validation Accuracy
96.920% -- Uniform [-0.1, 0.1)
97.200% -- Normal stddev 0.1
Loss
0.103 -- Uniform [-0.1, 0.1)
0.099 -- Normal stddev 0.1
比 UniformDistribution
稍微有所提高
Truncated Normal Distribution
Truncated Normal Distribution的训练效果
After 858 Batches (2 Epochs):
Validation Accuracy
97.020% -- Normal
97.480% -- Truncated Normal
Loss
0.088 -- Normal
0.034 -- Truncated Normal
模型再大点差别会更明显,因为正态分布有些过大过小的数会影响模型,而截断他就少受影响
结论
一般来说就用 TruncatedNormalDistribution
,效果是最猴滴~
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 7中搭建NFS文件共享存储服务的完整步骤
- PHP检测一个数组有没有定义的方法步骤
- Yii2.0框架模型多表关联查询示例
- Yii2.0框架模型添加/修改/删除数据操作示例
- thinkphp5.1框架容器与依赖注入实例分析
- 在CentOS VPS上通过SSH安装 MySQL的办法图解
- 详解PHP 7.4 中数组延展操作符语法知识点
- linux下安装boost库的完整步骤记录
- Python图像处理二值化方法实例汇总
- 利用Python实现斐波那契数列的方法实例
- Python如何实现大型数组运算(使用NumPy)
- 因str_replace导致的注入问题总结
- laravel框架中间件 except 和 only 的用法示例
- 浅析Python 多行匹配模式
- PHP命名空间定义与用法实例分析