关于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基础教程之Hello World!
Aug 29 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
python实现输入的数据在地图上生成热力图效果
Dec 06 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
解决python运行启动报错问题
Jun 01 Python
Python设计密码强度校验程序
Jul 30 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 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
使用PHP维护文件系统
2006/10/09 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
python查找指定具有相同内容文件的方法
2015/06/28 Python
python的exec、eval使用分析
2017/12/11 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python列表的逆序遍历实现
2020/04/20 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
公务员培训自我鉴定
2014/02/01 职场文书
总经理助理工作职责
2014/02/06 职场文书
班主任对学生的评语
2014/04/26 职场文书
农业项目建议书
2014/08/25 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
安全教育第一课观后感
2015/06/17 职场文书
养成教育主题班会
2015/08/13 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript