从张量阵列到张量阵列张量、阵列

由网友(莪掵甴Wǒ不甴天)分享简介:给定具有固定大小的Tensor数组和具有统一形状的条目,我想转到包含相同值的张量,只需将Tensor数组的索引维度作为正则轴。TensorArray有一个名为&Gathere&的方法,据称应该这样做。事实上,下面的示例是可行的:array = tf.TensorArray(tf.int32, size=3)arr...

给定具有固定大小的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

阅读全文

相关推荐

最新文章