关于tensorflow的几种参数初始化方法小结


Posted in Python onJanuary 04, 2020

在tensorflow中,经常会遇到参数初始化问题,比如在训练自己的词向量时,需要对原始的embeddigs矩阵进行初始化,更一般的,在全连接神经网络中,每层的权值w也需要进行初始化。

tensorlfow中应该有一下几种初始化方法

1. tf.constant_initializer() 常数初始化
2. tf.ones_initializer() 全1初始化
3. tf.zeros_initializer() 全0初始化
4. tf.random_uniform_initializer() 均匀分布初始化
5. tf.random_normal_initializer() 正态分布初始化
6. tf.truncated_normal_initializer() 截断正态分布初始化
7. tf.uniform_unit_scaling_initializer() 这种方法输入方差是常数
8. tf.variance_scaling_initializer() 自适应初始化
9. tf.orthogonal_initializer() 生成正交矩阵

具体的

1、tf.constant_initializer(),它的简写是tf.Constant()

#coding:utf-8
import numpy as np 
import tensorflow as tf 
train_inputs = [[1,2],[1,4],[3,2]]
with tf.variable_scope("embedding-layer"):
  val = np.array([[1,2,3,4,5,6,7],[1,3,4,5,2,1,9],[0,12,3,4,5,7,8],[2,3,5,5,6,8,9],[3,1,6,1,2,3,5]])
  const_init = tf.constant_initializer(val)
  embeddings = tf.get_variable("embed",shape=[5,7],dtype=tf.float32,initializer=const_init)
  embed = tf.nn.embedding_lookup(embeddings, train_inputs)             #在embedding中查找train_input所对应的表示
  print("embed",embed)
  sum_embed = tf.reduce_mean(embed,1)
initall = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(initall)
  print(sess.run(embed))
  print(sess.run(tf.shape(embed)))
  print(sess.run(sum_embed))

4、random_uniform_initializer = RandomUniform()

可简写为tf.RandomUniform()

生成均匀分布的随机数,参数有四个(minval=0, maxval=None, seed=None, dtype=dtypes.float32),分别用于指定最小值,最大值,随机数种子和类型。

6、tf.truncated_normal_initializer()

可简写tf.TruncatedNormal()

生成截断正态分布的随机数,这个初始化方法在tf中用得比较多。

它有四个参数(mean=0.0, stddev=1.0, seed=None, dtype=dtypes.float32),分别用于指定均值、标准差、随机数种子和随机数的数据类型,一般只需要设置stddev这一个参数就可以了。

8、tf.variance_scaling_initializer()

可简写为tf.VarianceScaling()

参数为(scale=1.0,mode="fan_in",distribution="normal",seed=None,dtype=dtypes.float32)

scale: 缩放尺度(正浮点数)

mode: "fan_in", "fan_out", "fan_avg"中的一个,用于计算标准差stddev的值。

distribution:分布类型,"normal"或“uniform"中的一个。

当 distribution="normal" 的时候,生成truncated normal distribution(截断正态分布) 的随机数,其中stddev = sqrt(scale / n) ,n的计算与mode参数有关。

如果mode = "fan_in", n为输入单元的结点数;

如果mode = "fan_out",n为输出单元的结点数;

如果mode = "fan_avg",n为输入和输出单元结点数的平均值。

当distribution="uniform”的时候 ,生成均匀分布的随机数,假设分布区间为[-limit, limit],则 limit = sqrt(3 * scale / n)

以上这篇关于tensorflow的几种参数初始化方法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
连接pandas以及数组转pandas的方法
Jun 28 Python
python里运用私有属性和方法总结
Jul 08 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
Python socket模块方法实现详解
Nov 05 Python
python super用法及原理详解
Jan 20 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
Python基础之操作MySQL数据库
May 06 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 #Python
Tensorflow 实现分批量读取数据
Jan 04 #Python
Tensorflow的常用矩阵生成方式
Jan 04 #Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 #Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 #Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 #Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 #Python
You might like
BBS(php & mysql)完整版(四)
2006/10/09 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
Django自定义分页与bootstrap分页结合
2021/02/22 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
Python 日期与时间转换的方法
2020/08/01 Python
Python函数调用追踪实现代码
2020/11/27 Python
Java里面有没有全局变量?为什么?
2015/02/06 面试题
上海奥佳笔试题面试题
2016/11/16 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
新春联欢会主持词
2014/03/24 职场文书
高中综合实践活动总结
2014/07/07 职场文书
初中同学会活动方案
2014/08/22 职场文书
物理课外活动总结
2014/08/27 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014年手术室工作总结
2014/11/26 职场文书
公司租车协议书
2015/01/29 职场文书
2015年导购员工作总结
2015/04/25 职场文书
士兵突击观后感
2015/06/16 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
maven依赖的version声明控制方式
2022/01/18 Java/Android