Как эффективно представить матричный продукт с повторяющимися элементамиPython

Программы на Python
Ответить
Anonymous
 Как эффективно представить матричный продукт с повторяющимися элементами

Сообщение Anonymous »

У меня есть тензор a формы (n/f, c, c), который я хочу умножить на другой тензор b формы (n, c, 1 ). Каждая строка a представляет собой f строк b, поэтому наивным способом реализации этого было бы просто повторять каждую строку a f раз перед выполнение умножения:

Код: Выделить всё

n = 100
c = 5
f = 10

a = tf.constant(np.random.rand(n//f, c, c))
b = tf.constant(np.random.rand(n, c, c))
a_prime = tf.repeat(a, f, 0)

result = a_prime @ b
Это работает, но для больших n и f меня беспокоит объем памяти, занимаемый повторением. Конечно, я мог бы просмотреть каждую строку и выполнить скалярное произведение вручную, но это повлияет на производительность. Есть ли лучший способ?

Подробнее здесь: https://stackoverflow.com/questions/792 ... d-elements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»