我有一个(BatchSize X 1)数字的张量,介于0到9之间 例如:
3
4
2
.
.
.
2
从每个数字开始,我需要创建一个新的张量,从数字开始直到数字9为止。 例如,为3 i创建一个张量:
3 2 1 0 -1 -2 -3 -4 -5 -6
这可以使用一个完成:
tf.range(3,3-9,1)
我需要对整个张量执行此操作,以创建一个新的张量(按照上面的示例):
3 2 1 0 -1 -2 -3 -4 -5 -6
4 3 2 1 0 -1 -2 -3 -4 -5
2 1 0 -1 -2 -3 -4 -5 -6 -7
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
2 1 0 -1 -2 -3 -4 -5 -6 -7
一个选项是以迭代的方式进行的,但这需要我将批处理大小硬编码到循环中,而我正试图避免这种情况。
欢迎提出任何有关优雅解决方案的想法。
答案 0 :(得分:1)
您可以使用tf.range(10)
对张量进行外部减法,方法是适当地重塑张量:
import tensorflow as tf
tf.InteractiveSession()
a = tf.constant([3,4,2,2])
b = tf.reshape(a, (-1,1)) - tf.range(10)
b.eval()
#array([[ 3, 2, 1, 0, -1, -2, -3, -4, -5, -6],
# [ 4, 3, 2, 1, 0, -1, -2, -3, -4, -5],
# [ 2, 1, 0, -1, -2, -3, -4, -5, -6, -7],
# [ 2, 1, 0, -1, -2, -3, -4, -5, -6, -7]], dtype=int32)