Как я могу создать Тензор с элементами, установленными в 1 определенным целым числом и заполнить 0, чтобы соответствовать размеру ширины - PullRequest
1 голос
/ 29 октября 2019

например. У меня есть тензор типа a = tf.constant([4,2,1,3]).

, если я хочу создать тензор с размером [4, 5]

Мне нужен тензор, который будет содержать следующие элементы ..


[[1,1,1,1,0],

[1,1,0,0,0],

[1,0,0,0,0],

[1,1,1,0,0] ] 

Как мне создать этот тензор?

1 Ответ

1 голос
/ 29 октября 2019

Вы можете сначала создать тензор, а затем заполнить его до той же длины. В конце сложите все тензоры вместе.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...