Использование «__call__(self,x): return self.foo_method(x)» и его отличие от «class.foo_method(x)»

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

class model:
   def __init__(self,blah blah...):
      blah blah

   def forward(self,x):
      blah blah
      return output_of_neural_network

   def __call__(self,x):
      return forward(x)

Предполагая, что мы хотим использовать метод пересылки в следующей части нашего кода...

Какова цель вызова класса как функции, например. model(xtrain) вместо model.forward(xtrain)?

Существуют ли какие-либо функциональные различия, связанные с экземпляром или переменными объекта класса, когда он вызывается как функция вместо прямого применения его метода?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это, как вы думали, чистый синтаксический сахар без каких-либо функциональных различий.

Я предполагаю, что причина этого заключается в том, что вы думаете о своем Model как о преобразовании входных данных. Это, я считаю, scikit-learn решает сделать с помощью своего transform метода, который, возможно, менее двусмыслен.

Другие вопросы по теме