关于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标准库os.path包、glob包使用实例
Nov 25 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
Python并发之多进程的方法实例代码
Aug 15 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
Python装饰器语法糖
Jan 02 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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
PHP中读取照片exif信息的方法
2014/08/20 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php备份数据库类分享
2015/04/14 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
ajax与302响应代码测试
2013/10/23 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python 正确保留多位小数的实例
2018/07/16 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
python实现126邮箱发送邮件
2020/05/20 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
应届生简历中的自我评价
2014/01/13 职场文书
践行三严三实心得体会
2014/10/13 职场文书
少先队工作总结2015
2015/05/13 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android