Как уменьшить среднее значение игнорирования нулевой строки в 3D-тензореPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Как уменьшить среднее значение игнорирования нулевой строки в 3D-тензоре

Сообщение Гость »


У меня есть 3D-тензор A имеет форму (batch_size, N, dim), а 3D-тензор B имеет форму (размер_пакета, N, 2). В котором B имеет некоторую строку заполнения для заполнения до N (который не является нулевым вектором, поскольку он уже передан в некоторых функциях). Чтобы узнать, какая строка дополнена, мне нужно найти тензор B. Если строка k дополнена, значение в строке k в тензор B равен [0, 0]. Я хочу отфильтровать эти дополненные строки в A перед вычислением среднего значения.

После приведения A к среднему значению по dim=1 результат имеет форму (batch_size, dim).

Изменить: я нашел одно решение. Любое другое решение приветствуется!
# сжать в 2D A = A.view(-1, A.size(-1)) B = Б.просмотр(-1, Б.размер(-1)) # замаскировать дополненную строку маска = torch.sum(B, dim=-1) маска[маска!=0] = 1 # дело в том, что мне нужно присвоить дополненную строку в A нулем A = маска.разжать(-1)*A # вычислить реальный размер каждого кластера. маска = маска.view(batch_size, -1) Batch_cluster_size = torch.sum(маска, dim=-1, keepdim=True) # конвертируем обратно в исходную форму A = A.view(batch_size, -1, A.size(-1)) вывод = torch.sum(A, dim=1)/batch_cluster_size
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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