从张量阵列到张量阵列 [英] Going from a TensorArray to a Tensor

查看:0
本文介绍了从张量阵列到张量阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定具有固定大小的Tensor数组和具有统一形状的条目,我想转到包含相同值的张量,只需将Tensor数组的索引维度作为正则轴。

TensorArray有一个名为&Gathere&的方法,据称应该这样做。事实上,下面的示例是可行的:

array = tf.TensorArray(tf.int32, size=3)
array.write(0, 10)
array.write(1, 20)
array.write(2, 30)

gathered = array.gather([0, 1, 2])

&q;收集&q;然后生成所需的张量:

tf.Tensor([10 20 30], shape=(3,), dtype=int32)

遗憾的是,当将其包装在tf.函数中时,它停止工作,如下所示:

@tf.function
def func():
    array = tf.TensorArray(tf.int32, size=3)
    array.write(0, 10)
    array.write(1, 20)
    array.write(2, 30)

    gathered = array.gather([0, 1, 2])
    return gathered

tensor = func()

张量&q;则错误地生成以下张量:

tf.Tensor([0 0 0], shape=(3,), dtype=int32)

您对此有什么解释吗?或者您能推荐一种替代方法来从tf.函数内的张量数组转换为张量数组吗?

推荐答案

根据https://github.com/tensorflow/tensorflow/issues/30409#issuecomment-508962873您必须:

将arr.write(j,t)替换为arr=arr.write(j,t)

问题是tf.unction以图形的形式执行。在急切模式下,数组将被更新(为方便起见),但实际上您应该使用返回值进行链操作:https://www.tensorflow.org/api_docs/python/tf/TensorArray#returns_6

这篇关于从张量阵列到张量阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆