Вы можете сначала создать тензор, а затем заполнить его до той же длины. В конце сложите все тензоры вместе.
a = tf.constant([4,2,1,3], dtype=tf.int32)
def pad_to_same(t):
return tf.pad(tf.ones(t, dtype=tf.int32), [[0,5-t]], constant_values=0)
res = tf.stack([pad_to_same(t) for t in a])
# <tf.Tensor: id=35571, shape=(4, 5), dtype=float32, numpy=
# array([[1., 1., 1., 1., 0.],
# [1., 1., 0., 0., 0.],
# [1., 0., 0., 0., 0.],
# [1., 1., 1., 0., 0.]], dtype=float32)>
Обновление Если вы хотите избежать цикла for, вы можете использовать tf.map_fn
,
def pad_to_same(t):
return tf.pad(tf.ones(t, dtype=tf.int32), [[0,5-t]], constant_values=0)
res = tf.map_fn(pad_to_same, a)