我有一个张量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`.
答案 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)