关于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中Random和Math模块学习笔记
May 18 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python 使用多属性来进行排序
Sep 01 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python破解同事的压缩包密码
Oct 14 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
Jan 27 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函数(简单整理)
2010/04/30 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
使用jQuery管理选择结果
2015/01/20 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
python中正则表达式的使用详解
2014/10/17 Python
Python中的多重装饰器
2015/04/11 Python
详解python里的命名规范
2018/07/16 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
校庆活动方案
2014/03/31 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
离职感谢信怎么写
2015/01/22 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
从原生JavaScript到React深入理解
2022/07/23 Javascript