以下是可重现的代码:
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()
的使用情况,还是错误?
答案 0 :(得分:1)
_test_fn
的第一个应用将返回范围(1,4),即[1,2,3]。第二个应用程序将返回范围(5,7),即[5,6]。然后,Tensorflow将尝试将所有这些放入一个张量,即[[1,2,3],[5,6]]。这不是一个有效的张量,因为这两行有不同的长度,所以这个代码崩溃了。你想要达到什么目的?