tensorflow 动态获取 BatchSzie 的大小实例


Posted in Python onJune 30, 2020

我就废话不多说了,大家还是直接看代码吧~

import tensorflow as tf
import sys

with tf.variable_scope('ha'):
  a1 = tf.get_variable('a', shape=[], dtype=tf.int32)
  with tf.variable_scope('haha'):
    a2 = tf.get_variable('a', shape=[], dtype=tf.int32)
    with tf.variable_scope('hahaha'):
      a3 = tf.get_variable('a', shape=[], dtype=tf.int32)

with tf.variable_scope('ha', reuse=True):
  # 不会创建新的变量
  a4 = tf.get_variable('a', shape=[], dtype=tf.int32)
  
sum = a1 + a2 + a3 + a4

fts_s = tf.placeholder(tf.float32, shape=(None, 100), name='fts_s')
b = tf.zeros(shape=(tf.shape(fts_s)[0], tf.shape(fts_s)[1]))

concat = tf.concat(axis=1, values=[fts_s, b])

init_op = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init_op)
  for var in tf.global_variables():
    print var.name
  import numpy as np
  ft_sample = np.ones((10, 100))
  con_value = sess.run([concat], feed_dict={fts_s: ft_sample})
  print con_value[0].shape

results:

ha/a:0
ha/haha/a:0
ha/haha/hahaha/a:0
(10, 200)

小总结:

1: 对于未知的shape, 最常用的就是batch-size 通常是 None 代替, 那么在代码中需要用到实际数据的batch size的时候应该怎么做呢?

可以传一个tensor类型, tf.shape(Name) 返回一个tensor 类型的数据, 然后取batchsize 所在的维度即可. 这样就能根据具体的数据去获取batch size的大小

2: 对于变量命名, 要善于用 variable_scope 来规范化命名, 以及 reuse 参数可以控制共享变量

补充知识:tensorflow RNN 使用动态的batch_size

在使用tensorflow实现RNN模型时,需要初始化隐藏状态 tensorflow 动态获取 BatchSzie 的大小实例 如下:

lstm_cell_1 = [tf.nn.rnn_cell.DropoutWrapper(tf.nn.rnn_cell.BasicLSTMCell(HIDDEN_SIZE),output_keep_prob=dropout_keep_prob) for _ in range(NUM_LAYERS)]
cell_1 = tf.nn.rnn_cell.MultiRNNCell(lstm_cell_1)
self.init_state_1 = cell_1.zero_state(self.batch_size,tf.float32)

如果我们直接使用超参数batch_size初始化 tensorflow 动态获取 BatchSzie 的大小实例 在使用模型预测的结果时会很麻烦。我们可以使用动态的batch_size,就是将batch_size作为一个placeholder,在运行时,将batch_size作为输入输入就可以实现根据数据量的大小使用不同的batch_size。

代码实现如下:

self.batch_size = tf.placeholder(tf.int32,[],name='batch_size')

self.state = cell.zero_state(self.batch_size,tf.float32)

以上这篇tensorflow 动态获取 BatchSzie 的大小实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
Python中几个比较常见的名词解释
Jul 04 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python实现自动发送邮件功能
Mar 02 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python实现打砖块小游戏代码实例
May 18 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
详解python中的time和datetime的常用方法
Jul 08 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 #Python
tensorflow图像裁剪进行数据增强操作
Jun 30 #Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 #Python
Python openpyxl模块实现excel读写操作
Jun 30 #Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 #Python
Python的控制结构之For、While、If循环问题
Jun 30 #Python
关于tensorflow softmax函数用法解析
Jun 30 #Python
You might like
PHP系统流量分析的程序
2006/10/09 PHP
php 中include()与require()的对比
2006/10/09 PHP
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
python版大富翁源代码分享
2018/11/19 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
Java如何支持I18N?
2016/10/31 面试题
中专生自我鉴定
2013/12/17 职场文书
反四风对照检查材料
2014/09/22 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
新员工考核评语
2014/12/31 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android