tf.map_fn & tf.range запутанный результат - PullRequest
0 голосов
/ 29 апреля 2018

Вот воспроизводимый код:

def _test_fn(tp):
    tp0 = tp[0]
    tp1 = tp[1]
    result = tf.range(tp0, tp1)
    return result

ll = tf.constant([[1,4], [5, 7]])

result = tf.map_fn(lambda tp: _test_fn(tp), ll)

sess = tf.Session()
sess.run(result)

Ожидается, что этот код выведет [[1,2,3], [5,6]]. Однако я получаю сообщение об ошибке:

InvalidArgumentError (см. Выше для отслеживания): TensorArray имеет несовместимые формы. Индекс 0 имеет форму: [3], но индекс 1 имеет форму: [2]

Я неправильно понимаю использование tf.range() и tf.map_fn() или это ошибка?

1 Ответ

0 голосов
/ 29 апреля 2018

Первое применение _test_fn вернет диапазон (1,4), который равен [1,2,3]. Второе приложение вернет диапазон (5,7), который равен [5,6]. Затем Tensorflow попытается объединить все это в один тензор, то есть [[1,2,3], [5,6]]. Это недопустимый тензор, поскольку две строки имеют разную длину, поэтому этот код вылетает. Чего именно вы пытаетесь достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...