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绘制数据的瀑布图的教程
Apr 07 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
Python标准库笔记struct模块的使用
Feb 22 Python
python中使用print输出中文的方法
Jul 16 Python
python命令行工具Click快速掌握
Jul 04 Python
简单了解django orm中介模型
Jul 30 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
使用pandas的box_plot去除异常值
Dec 10 Python
Django分组聚合查询实例分享
Apr 29 Python
详解pandas赋值失败问题解决
Nov 29 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
2020最新CPU的性能排名
2020/04/02 数码科技
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
php新建文件的方法实例
2019/09/26 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
js实现消息滚动效果
2017/01/18 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
线程同步的方法
2016/11/23 面试题
大学新生欢迎词
2014/01/10 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL