Свертки PyTorch на самом деле реализованы как взаимные корреляции. Это не должно вызывать проблем при обучении слоя свертки, так как один является просто перевернутой версией другого (и, следовательно, изученная функция будет столь же мощной), но делает докажите проблему, когда:
- пытаясь реализовать настоящую свертку с библиотекой
functional
- попытка скопировать веса фактической свертки из другой библиотеки глубокого обучения
Авторы говорят следующее в Глубокое обучение с PyTorch :
Свертка, точнее, дискретная свертка1...
1. Существует тонкое различие между сверткой PyTorch и сверткой математики: знак одного аргумента переворачивается. Если бы мы были настроены педантично, мы могли бы назвать извилины PyTorch дискретными взаимными корреляциями.
Но они не объясняют, почему это реализовано именно так. Есть ли причина?
Может быть, что-то похожее на то, как реализация PyTorch CrossEntropyLoss
на самом деле не кросс-энтропия, а аналогичная функция использование логитов в качестве входных данных вместо необработанных вероятностей (во избежание числовой нестабильности) ?