如何使用tf.map_fn迭代张量并为每次迭代返回不同维度的值?

时间:2019-05-27 18:41:02

标签: python tensorflow

我想遍历张量而不使用必须使用tf.map_fn()的Eager Execution。 我想做的事情可以显示如下:

import tensorflow as tf

list_of_values = tf.constant([[1, 9, 65, 43], [8, 23, 21, 48], [11, 14, 98, 21], [98, 12, 32, 12]])

def value_finder(i):
  def f1():
    # Some computation with a local variable 'a' occurs
    # . . .
    return a  # a = [[3, 4, 5]]

  def f2():
    # Some computation with a local variable 'b' occurs
    # . . .
    return b  # b = [[7, 1, 2], [9, 3, 11]]

  return tf.cond(tf.reduce_all(tf.less(tf.slice(i, [1], [1]), tf.constant(18))), f1, f2)

value_obtained = tf.map_fn(lambda i: value_finder(i), list_of_values))

值a和b的维数不同,因此,每当我尝试运行代码时都会收到错误消息。以我为例,返回的值的尺寸不可避免。除了填充值以使它们具有相等的尺寸之外,还有其他方法可以迭代张量并获得结果吗?

0 个答案:

没有答案