У меня есть два тензора формы a(16,8,8,64)
и b(64,64)
. Предположим, я извлекаю последнее измерение a
в другой вектор-столбец c
, я хочу вычислить matmul(matmul(c.T, b), c)
. Я хочу, чтобы это было сделано в каждом из первых трех измерений a
. То есть конечный продукт должен иметь форму (16,8,8,1)
. Как я могу добиться этого в pytorch?
1 ответ
Можно сделать следующим образом:
row_vec = a[:, :, :, None, :].float()
col_vec = a[:, :, :, :, None].float()
b = (b[None, None, None, :, :]).float()
prod = torch.matmul(torch.matmul(row_vec, b), col_vec)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.