Элегантный способ сделать это объединение в TF / Numpy? - PullRequest
1 голос
/ 12 июня 2019

У меня есть тензор tmp1.Я хочу создать tmp2, который представляет собой N копий tmp1 вдоль первой оси tmp1 (tmp1 имеет размерность 1 вдоль своей первой оси).Я сделал это с помощью цикла.Но я ненавижу их, потому что они замедляют тренировки.Есть ли лучший способ создания tmp2?

tmp2 = tf.concat((tmp1, tmp1), axis=1)
for i in range(2*batch_size-2):
    tmp2 = tf.concat((tmp2, tmp1), axis=1)

Что я сделал выше: сначала инициализируйте tmp2 двумя копиями tmp1, затем продолжайте добавлять больше копий вдоль этой оси аналогичным образом.

1 Ответ

1 голос
/ 12 июня 2019

Я думаю, ты хочешь NumPy repeat(). Используйте аргумент axis, чтобы указать, какую ось повторять:

In [1]: x = np.random.randint(1, 10, (5,5))                                                                                                                     
In [2]: x                                                                                                                                                       
Out[2]: 
array([[7, 3, 6, 8, 8],
       [6, 5, 3, 3, 9],
       [1, 7, 1, 5, 7],
       [4, 6, 6, 8, 3],
       [3, 7, 8, 6, 7]])
In [4]: x.repeat(2, axis=1)                                                                                                                                     
Out[4]: 
array([[7, 7, 3, 3, 6, 6, 8, 8, 8, 8],
       [6, 6, 5, 5, 3, 3, 3, 3, 9, 9],
       [1, 1, 7, 7, 1, 1, 5, 5, 7, 7],
       [4, 4, 6, 6, 6, 6, 8, 8, 3, 3],
       [3, 3, 7, 7, 8, 8, 6, 6, 7, 7]])

Или, возможно, numpy.tile():

In [15]: np.tile(x, 2)                                                                                                                                            
Out[15]: 
array([[7, 3, 6, 8, 8, 7, 3, 6, 8, 8],
   [6, 5, 3, 3, 9, 6, 5, 3, 3, 9],
   [1, 7, 1, 5, 7, 1, 7, 1, 5, 7],
   [4, 6, 6, 8, 3, 4, 6, 6, 8, 3],
   [3, 7, 8, 6, 7, 3, 7, 8, 6, 7]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...