В PyTorch, в чем разница между forward () и обычным методом? - PullRequest
1 голос
/ 22 октября 2019

Чем реализация метода forward() пользовательского класса nn.Module отличается от добавления обычного метода к этому классу?

Я слышал, что метод forward() должен принимать и возвращать только тензоры, потому чтоPyTorch реализовал специальную обработку для ввода и вывода метода forward(). Но я попытался ввести / вывести нетензорные объекты с помощью метода forward() и реализовать модуль, у которого нет метода forward() (вместо этого есть несколько пользовательских методов, которые действуют как методы forward()). Оба способа работали хорошо.

1 Ответ

2 голосов
/ 22 октября 2019

forward() метод принимает параметры любого типа. Однако цель метода forward() заключается в инкапсуляции шагов прямого вычисления. forward() вызывается в функции __call__. В методе forward() PyTorch вызывает вложенную модель для выполнения прямого прохода.

Рекомендуется:

НЕ вызывать метод forward (x). Вы должны вызывать всю модель целиком, как в модели (x), для выполнения прогнозирования прямого прохода и вывода.

Что произойдет, если вы этого не сделаете?

Если вы позвонитеметод .forward() и наличие в вашей модели крючков , крючки не будут иметь никакого эффекта.

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