Как я могу получить MSE тензора в определенном измерении?

У меня есть 2 тензора с .size из torch.Size([2272, 161]). Я хочу получить среднеквадратичную ошибку между ними. Однако я хочу, чтобы это было по каждому из 161 канала, чтобы мой тензор ошибок имел .size из torch.Size([161]). Как я могу это сделать?

Кажется, torch.nn.MSELoss не позволяет мне указать размер.


person Shamoon    schedule 01.04.2020    source источник


Ответы (1)


Для nn.MSELoss можно указать опцию reduction='none'. Затем это возвращает вам квадрат ошибки для каждой позиции входа обоих ваших тензоров. Затем вы можете применить torch.sum/torch.mean.

a = torch.randn(2272,161)
b = torch.randn(2272,161)
loss = nn.MSELoss(reduction='none')
loss_result = torch.sum(loss(a,b),dim=0) 

Я не думаю, что есть прямой способ указать при инициализации потери, к какому измерению применить среднее/сумму. Надеюсь, это поможет!

person Niklas Höpner    schedule 01.04.2020