关于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实现调用其他python脚本的方法
Oct 05 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python挑选文件夹里宽大于300图片的方法
Mar 05 Python
python和bash统计CPU利用率的方法
Jul 10 Python
利用python批量检查网站的可用性
Sep 09 Python
Python 3中的yield from语法详解
Jan 18 Python
Python分支结构(switch)操作简介
Jan 17 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 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中的boolean(布尔)类型详解
2013/10/28 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript引用对象的方法
2007/01/11 Javascript
javaScript对象和属性的创建方法
2007/01/15 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
vue实现节点增删改功能
2019/09/26 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
小学生新学期寄语
2014/01/19 职场文书
大学生创业感言
2014/01/25 职场文书
警示教育活动总结
2014/05/05 职场文书
授权委托书格式范文
2014/08/02 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python