从张量阵列到张量阵列 [英] Going from a TensorArray to a Tensor
本文介绍了从张量阵列到张量阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定具有固定大小的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屋!
查看全文