关于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线程锁(thread)学习示例
Dec 04 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
在Django的视图中使用form对象的方法
Jul 18 Python
python读写json文件的简单实现
Apr 11 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
Python ATM功能实现代码实例
Mar 19 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
python中元组的用法整理
Jun 15 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 Python
python神经网络ResNet50模型
May 06 Python
python 使用pandas读取csv文件的方法
Dec 24 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入门教程 精简版
2009/12/13 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
php7性能提升的原因详解
2019/10/13 PHP
js 判断 enter 事件
2009/02/12 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
Python全局变量用法实例分析
2016/07/19 Python
详解python的数字类型变量与其方法
2016/11/20 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python使用多进程的实例详解
2018/09/19 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
学生档案自我鉴定
2013/10/07 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
图书室标语
2014/06/21 职场文书
总经理检讨书范文
2015/02/16 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
Redis实战高并发之扣减库存项目
2022/04/14 Redis