Как я могу получить MSE тензора через заданное измерение c? - PullRequest
0 голосов
/ 01 апреля 2020

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

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

1 Ответ

1 голос
/ 01 апреля 2020

Для 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) 

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

...