На этом шаге мы перечислим ограничения, возникающие при использовании подклассов.
За такую свободу приходится платить: определяя свои подклассы класса Model, вы отвечаете за реализацию большей части логики работы модели, поэтому вероятность допустить ошибку намного больше. Как следствие, вам придется больше времени потратить на отладку. Теперь вы разрабатываете новый объект на Python, а не просто собираете вместе кубики лего.
Кроме того, модели на основе подклассов по своей природе существенно отличаются от функциональных моделей. Функциональная модель - это явная структура данных: граф слоев, который можно просматривать, исследовать и изменять. Модель на основе подкласса - это фрагмент байт-кода, класс Python с методом call(), который содержит нестандартный код. Подклассы дают дополнительную гибкость - вы можете реализовать любые функции, какие только пожелаете. Но также это накладывает определенные ограничения.
Например, поскольку способ соединения слоев друг с другом скрыт в теле метода call(), вы не сможете получить доступ к этой информации. Вызов summary() не покажет связи между слоями, а plot_model() не сможет построить топологию модели. Точно так же вы не доберетесь к узлам графа слоев в модели на основе подкласса, чтобы извлечь признаки, потому что графа просто не существует. После создания экземпляра модели логика ее прямого прохода становится настоящим черным ящиком.
На следующем шаге мы рассмотрим смешивание и согласование различных компонентов.