关于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实现的udp协议Server和Client代码实例
Jun 04 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
Python单元测试简单示例
Jul 03 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
python爬虫超时的处理的实例
Dec 19 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
Python使用python-docx读写word文档
Aug 26 Python
python中文分词库jieba使用方法详解
Feb 11 Python
利用PyQt中的QThread类实现多线程
Feb 18 Python
总结三种用 Python 作为小程序后端的方式
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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
python生成n个元素的全组合方法
2018/11/13 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
外贸业务员的岗位职责
2013/11/23 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
工程质量承诺书
2014/03/27 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
律师授权委托书范本
2014/10/07 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
财务工作失职检讨书
2014/11/21 职场文书
成绩单评语
2015/01/04 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
JS 基本概念详细介绍
2021/10/16 Javascript