Tensorflow扫描具有偏移的多个矩阵行

时间:2018-10-17 22:54:14

标签: python tensorflow

问题

我想扫描类似于Tensorflow的tf.scan()的矩阵,但是一次使用多行。因此,给定一个[n, m]矩阵,我希望能够将m行(带有n元素)从i + jm进行迭代,得到{{1} }形状为m - j的切片。

如何实现?

我知道[i - j, n]是如何做的,返回每次迭代的累加值。但是我不认为将矩阵作为多个输入来解决可以解决此问题,因为具有偏移量的值无法预先计算。

示例

tf.scann = 3为例,假设我有一个如下所示的矩阵:

m = 5

我想从第3行到第5行应用以下功能:

# [[1 0 0]
#  [1 1 0]
#  [0 0 0]   row 3
#  [0 0 0]   row 4
#  [0 0 0]]  row 5

matrix_shape = [5, 3]
matrix_idx = tf.constant([[0, 0], [1, 0], [1, 1]])
matrix = tf.scatter_nd(matrix_idx,
                       tf.ones(tf.shape(matrix_idx)[0],
                               dtype=tf.int32),
                       matrix_shape)

Tensorflow是否具有特定于此问题的功能?

1 个答案:

答案 0 :(得分:0)

我编写的以下代码完全符合我的要求。

这里的重要部分是return使用的函数tf.scan,它不仅返回当前的计算c,而且还返回上一步{{1 }}。因此,重要的是稍后仅通过使用b选择此列表中的后一个张量来从computation中消除此多余量。

[1]

由于我仍然缺乏经验:该解决方案可能对性能不利,因为该函数返回一个元组,因此不使用Tensorflow的速度优化吗?