【tf】tf.TensorArray和tf.while_loop组合使用

2023-05-16

TensorArray

TensorArray可以看做是具有动态size功能的Tensor数组。通常都是跟while_loop或map_fn结合使用。
常用方法有

  • write(index,value):将value写入TensorArray的第index个位置
  • stack:将TensorArray中的值作为Tensor返回

while_loop

final_state = tf.while_loop(cond, loop_body, init_state),作用是循环处理某个变量,中间处理的结果用来进行下一次处理,最后输出经过数次加工的变量,由于TensorArray可以动态扩展,因此常用来存储中间结果。

  • cond:是一个函数,负责判断继续执行循环的条件。
  • loop_body:是每个循环体内执行的操作,负责对循环状态迸行更新。
  • init_state:为循环的起始状态,它可以包含多个Tensor 或者 TensorArray 。

如果用伪代码来表示运行逻辑的话,那 tf.while_loop 的功能与下面的代码相当 :

def while_loop(cond, loop_body, init_state): 
    state = init_state 
    while(cond(state)) :   # 使用cond函数判断是否达到循环结束条件。
        state = loop_body(state)   # 使用loop_body函数对state进行更新。
    return state 

例子:

import tensorflow as tf

def condition(time, output_ta_l):
    return tf.less(time, 3)  # 真值比较 time小于3返回True 否则False

def body(time, output_ta_l):
    output_ta_l = output_ta_l.write(time, [2.4, 3.5])
    return time + 1, output_ta_l

time = tf.constant(0)
output_ta = tf.TensorArray(dtype=tf.float32, size=1, dynamic_size=True)
print(output_ta)
>>> <tensorflow.python.ops.tensor_array_ops.TensorArray object at 0x0000016135AB4D88>
result = tf.while_loop(condition, body, loop_vars=[time, output_ta])
last_time, last_out = result
final_out = last_out.stack()
print(last_time.numpy())
>>> 3
print(last_out) # 还未解析的TensorArray
>>> <tensorflow.python.ops.tensor_array_ops.TensorArray object at 0x000002189D415E08>
print(final_out.numpy()) # time从0到3,一共向last_out写了三次
>>> [[2.4 3.5]
	 [2.4 3.5]
	 [2.4 3.5]]

参考

  • TensorArray解析
  • control_flow_ops.while_loop函数循环
  • tf.while_loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【tf】tf.TensorArray和tf.while_loop组合使用 的相关文章

  • element-ui二次封装实现普通登录组件

    文章目录 前言一 实现方法1 创建 AccountLogin 组件2 全局注册组件3 使用组件 二 组件效果总结 前言 在开发 vue 项目时 xff0c 我们都可能用到 element ui xff0c 但是有时 element ui 提
  • CFCA预置证书

    1 单一证书 2 导入数字证书流程 3 加密证书私钥结构
  • element-ui二次封装实现短信验证码登录组件

    文章目录 前言一 实现方法1 创建 PhoneLogin 组件2 全局注册组件3 使用组件 二 组件效果总结 前言 在开发 vue 项目时 xff0c 我们都可能用到 element ui xff0c 但是有时 element ui 提供的
  • C++之make、cmake和makefile的区别

    make cmake和makefile的区别 make 此工具类似于批处理工具 xff0c 可以对多个源文件进行批量地编译和链接makefile 是一个文本文件 xff0c 其中包含了make工具在执行时所要遵循的一系列规则Cmake xf
  • Ubuntu系统下搭建PX4环境

    Ubuntu系统下搭建PX4环境 首先我是从一个小白开始的 xff0c 完全不懂linux系统 xff0c 完全不懂PX4 xff0c PX4固件是Pixhawk飞行控制器的官方固件 xff0c Pixhawk官网也给出了Linux win
  • mavlink_generator生成器安装过程

    mavlink generator生成器安装过程 从官网下载mavlink xff08 git clonhttps github com mavlink mavlink git 然后进入mavlink 目录执行 git submodule
  • linux系统下QGC地面站和串口助手cutecom 安装教程

    linux系统下QGC地面站和串口助手cutecom 安装教程 解除权限 xff1a sudo usermod a G dialout USER sudo apt get remove modemmanager y sudo apt ins
  • PX4中通过串口读取STM32F4串口发送过来消息并发布UORB主题

    PX4中通过串口读取STM32F4串口发送过来消息并发布UORB主题 本次小项目是通过PX4读取STM32F4发过来的数据 xff0c 之前博客介绍了我做的STM32端项目 xff0c 再稍微啰嗦一下 xff1a 解析AIRMAR和测深仪数
  • PX4自定义mavlink消息

    PX4自定义mavlink消息 承接前面UORB发布消息 xff0c 然后现在要使用mavlink发布消息 xff0c 然后通过433MHz进行无线传输 这个阶段对我来说异常艰难 xff0c 我个人傻傻看了2天mavlink配置文件 xff
  • GraphSAGE论文总结及源码解读

    论文总结 论文地址 xff0c 源码 本文只对论文做简单的总结分析 xff0c 不详细介绍 xff0c GraphSAGE 即SAmple and aggreGatE 的主要贡献是引入了Inductive和Sample Inductive
  • 【tf】tf.random_shuffle

    张量沿着维度0 按行打乱 重新打乱 xff0c 例如 一个 3x2 张量可能出现的映射是 span class token punctuation span span class token punctuation span span cl
  • 【tf】tf.nn.dropout

    dropout是神经网络中用来防止过拟合的技巧 xff0c 在每一轮训练时随机丢弃一些神经元 tf span class token punctuation span nn span class token punctuation span
  • Windows服务程序

    Windows服务程序 Windows服务程序 liuxwin ChinaUnix博客
  • 【tf】tf.reduce_mean

    x span class token operator 61 span tf span class token punctuation span Variable span class token punctuation span span
  • 马氏距离(Mahalanobis Distance)推导及几何意义

    看了一些博客对马氏距离的解释 xff0c 似乎没有讲到本质的地方 xff0c 本文从欧氏距离存在的问题开始入手 xff0c 一步步推导出马氏距离 xff0c 并得出结论 xff1a 原始空间中的马氏距离等于坐标旋转变换及缩放后的空间中的欧氏
  • GCN推导

    GCN涉及到的理论比较多 xff0c 包括信号分析中的傅里叶变换 图谱等理论 xff0c 这里只做一个简单的推导 xff0c 旨在让读者了解GCN推导的大致思路以及其中用到的定理 xff0c 错误之处还请指出 大致了解GCN的思路后可移步学
  • 离散马尔科夫链的平稳分布的两种解法

    假设离散马尔科夫链的转移矩阵为 P P P xff0c 平稳分布为 pi xff0c 则平稳分布满足 xff1a
  • 协方差矩阵的几何意义

    假设原始数据为 X X X xff0c 其协方差矩阵 C C C 为对称矩阵 xff0c 协方差矩阵的特征分解为
  • DBSCAN算法原理

    DBSCAN Density Based Spatial Clustering of Applications with Noise xff0c 基于密度的噪声空间聚类 大概思想 xff1a 给定一组空间中的点 xff0c 它会将紧密挨在一
  • 【tf】tf.expand_dims()

    增加张量维度 span class token keyword import span tensorflow span class token keyword as span tf a span class token operator 6

随机推荐

  • 卷积与反卷积

    卷积与反卷积 xff0c 及其在tensorflow中的接口 xff0c 文章 keras中的卷积 xff0c 文章 卷积时padding选择 same 则卷积结果和输入相同 xff0c 选择 valid 则根据公式 o 61 i
  • 【tf】tf.nn.relu_layer()

    tf nn relu layer x weights biases name 61 None tf nn relu x 函数对卷积后的结果进行激活 xff0c 而tf nn relu layer对输入变量x和weights做矩阵乘法并加上b
  • 【keras】搭建简单的神经网络

    span class token keyword from span keras span class token keyword import span layers span class token keyword from span
  • 进程间数据共享

    windows核心编程之进程间共享数据 走看看 zoukankan com
  • 深度学习训练神经网络时一些名词的意思

    假设训练数据集合 T T T 包含 N N N 个样本 xff0c 将数据集划分为 B
  • 【keras】将标签转化为one-hot

    将标签转换为onehot span class token keyword from span keras span class token punctuation span utils span class token keyword i
  • 交叉熵

    参考自 xff0c 文章 在度量两个概率分布的差距时 xff0c 我们通常会使用KL 散度 xff0c 例如对于 p p p q q q 两个概率分布 xff0c 其KL 散度为
  • 深度学习分类损失函数

    损失函数softmax cross entropy binary cross entropy sigmoid cross entropy之间的区别与联系 xff0c 以及其在tensorflow中的用法 文章 softmax cross e
  • 图像分割任务中的图像增强

    对数据进行增强是一种常用的操作 xff0c 用来生成更多的数据 xff0c 提高模型的泛化能力 xff0c 对图像数据增强的常用方法有 xff1a 弹性形变 旋转 加入噪声等 在图像分割任务中 xff0c 除了需要对图像进行变换外 xff0
  • Python保存图片

    image为三维数组 xff08 RGB xff09 或一维数组 xff08 灰白 xff09 span class token keyword import span matplotlib span class token punctua
  • 【keras】多GPU训练模型及保存

    下面是一个小demo xff0c 需要注意的地方是保存模型的时候只保存单个GPU的模型 xff0c 不要保存多GPU训练的模型 xff0c 否则加载时会报错的 span class token keyword from span sklea
  • LSTM参数个数计算方法

    计算LSTM的参数个数需要了解其工作原理 xff0c 如下 xff1a 可以看到若不加偏置 xff0c 该LSTM层共有4个权重参数 xff0c 图中输入的一个timestep的特征大小为3 xff08 绿色单元 xff09 xff0c 隐
  • 【keras】搭建多层lstm层

    记住中间的lstm层需要返回所有timestep的输出作为下一层lstm的输入 xff0c 所以除了最后一层lstm外其它层的return sequences 61 True span class token keyword from sp
  • 【keras】利用LSTM做简单的时间序列预测

    项目地址 首先加载时间序列数据集 xff0c 数据集 span class token keyword import span pandas span class token keyword as span pd data span cla
  • advanced installer 使用常见问题整理

    1 安装文件没有被覆盖问题 解决 xff1a Files and Folders 选择所有文件 右键 Properties Operations Always overwrite existing file 2 ocx或dll文件的注册 解
  • 【keras】使用fit_generator训练超大数据集

    对于小规模的数据集我们可以将其一次性读入内存 xff08 CPU xff09 中然后再分batch让GPU去训练 xff0c 只要简单地使用fit函数即可 xff1b 然而当数据集规模超大时 xff0c 一次性读入所有数据会使得内存溢出 x
  • 【keras】使用tensorboard可视化

    只需要在fit或fit generator前加上这几句代码即可 xff0c log filepath前要加r解析为路径 xff0c 否则会报错 log filepath span class token operator 61 span r
  • 【tf】tf.tile()

    https blog csdn net tsyccnh article details 82459859
  • 【keras】layers.ZeroPadding2D()

    ZeroPadding2D xff0c 传入的参数如果是一个二维的tuple xff0c top pad bottom pad left pad right pad xff0c 它表示在上下左右分别补多少层零 span class toke
  • 【tf】tf.TensorArray和tf.while_loop组合使用

    TensorArray TensorArray可以看做是具有动态size功能的Tensor数组 通常都是跟while loop或map fn结合使用 常用方法有 write index value xff1a 将value写入TensorA