Pytorch и NumPy правила вещания различия? - PullRequest
4 голосов
/ 29 июня 2019

Я немного поэкспериментировал с факелом, и вот что я нашел:

  • ( 5,7,3) and ( 5,7,3) -> ( 5,7,3) - равно
  • (5,3,4,1) and (5,3,1,1) -> (5,3,4,1) - один тусклый - 1
  • (5,3,4,1) and ( 3,4,1) -> (5,3,4,1) - одна тусклость не существует
  • (5,3,4,1) and ( 3,1,1) -> (5,3,4,1) - одна яркость равна 1, а другая не существует
  • ( 4,3,2) and (5,4,1,1) -> (5,4,3,2)
  • ( 4,1) and (5,3,1,1) -> (5,3,4,1) - одна яркость равна 1, а две не существуют
  • ( 1) and (5,3,4,2) -> (5,3,4,2) - один дим 1 и другие не существуют
  • ( ) and (5,3,4,2) -> (5,3,4,2) - скаляр и тензор
  • ( 0) and (5,3,2,1) -> (5,3,2,0) - пустой тензор и тензор
  • ( 4,1) and ( 4) -> ( 4,4) - отсутствует значение dim 1
  • ( 4,2) and ( 4) -> не транслируется
  • ( 5,2,1) and (5,3,2,1) -> не транслируется
  • (5,3,2,1) and ( 5,3,2) -> не транслируется

Документация Pytorch гласит:

Многие операции PyTorch поддерживают семантику NumPy Broadcasting.

Значит ли это, что pytorch следует правилам вещания numpy, и они одинаковы, или я тоже должен поэкспериментировать с numpy?

В документации для numpy нет конкретных правил, как в правилах pytourch'а. И даже документация pytorch'а не совсем точна, например, он говорит, что каждый тензор должен иметь хотя бы одно измерение , но torch.empty(3,4) + torch.tensor(42) работает нормально (у скаляра нет измерений).

Правила, которые я нашел:

  • Начиная с конечного размера, размеры тусклых частей должны быть либо равны, либо один из них должен быть равен 1 (для пропущенных первых тусклых единиц предполагается 1).
  • Для каждого тусклого результирующего тусклого числа есть максимум двух.
  • Операции на месте не позволяют тензору на месте изменять форму.

Кажется, что это самый разумный подход к вещанию, и я не понимаю, почему он был бы другим для numpy. Но, возможно, есть некоторые особенности.

Если кто-то может предоставить доказательства или, по крайней мере, ручаться за то, что у numpy те же правила, что и у pytorch, то я был бы благодарен, так как не пришлось бы изучать поведение numpy вещания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...