如何计算每个索引

时间:2018-05-06 11:19:43

标签: python tensorflow

我有一个张量t = {t[0], t[1], ..., t[m]}。对于此张量中的每个元素i,我想计算t[i]*i,这将导致具有相同形状的新张量t'以及以下值:t' = {t[0]*0, t[1]*1, ..., t[m]*m}

我该如何实现? 我尝试过使用for循环,但失败了,因为引发了以下错误。

TypeError: `Tensor` objects are not iterable when eager execution is not 
enabled. To iterate over this tensor use `tf.map_fn`.

2 个答案:

答案 0 :(得分:0)

您正在寻找tf.range。 E.g。

res = tf.range(t.shape[0]) * t

答案 1 :(得分:0)

你实际上回答了我的问题,事实上,我有一个更普遍的问题。

有一个三维张量,我需要计算第二维元素的预期值。我试图通过下面的for循环来做到这一点,但错误'张量是不可迭代的'已被提出。

for i in tf.range(start=0, limit=softed_mul.shape[0]):
    elems = (softed_mul[i, :, :], indexs)
    softed_arg_maxs[i, :, :] = tf.map_fn(lambda x:x[0] * x[1], elems, 
    dtype=tf.float32)