关于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中的元祖(Tuple)和字典(Dict)
Apr 21 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
python实现录音小程序
Oct 26 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
python logging添加filter教程
Dec 24 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
Python3-异步进程回调函数(callback())介绍
May 02 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从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
Python编码类型转换方法详解
2016/07/01 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
numpy.array 操作使用简单总结
2019/11/08 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
电脑教师的自我评价
2013/12/18 职场文书
信息技术课后反思
2014/04/27 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
费城故事观后感
2015/06/10 职场文书
科级干部培训心得体会
2016/01/06 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL