Висловлювання та примітки Андрія - Визначення моделі багаторазового використання Keras

Моделі в Keras успадковуються від класу keras.models.Model. Це контейнер для шарів, але він може також включати інші моделі як будівельні блоки. Перш ніж навчатись або використовуватись для прогнозування, модель «Кераса» повинна бути «скомпільована», що передбачає вказівку функції втрат та оптимізатора. Я виявив, що для поліпшення повторного використання коду визначення моделі існує кілька основних принципів:

андрія

  • Впровадити визначення моделей як функції, що приймають гіперпараметри як вхідні дані та повертають об'єкт Model.
  • Тримайте визначення моделі окремо від складання та навчання.
  • Зробіть шари верхнього рівня необов’язковими.
  • Знайте свій функціональний API Keras.

Я б не сподівався, що хтось сприйме цю пораду як належне, тому давайте перейдемо до обґрунтування кожного пункту.

Визначення моделей - це функції, що приймають гіперпараметри як аргументи¶

Існує три популярні способи визначення моделей Keras у коді:

  • Випадкове місце поблизу навчального коду. Це чудово підходить для вивчення, коли ви швидко щось зламаєте в блокноті, і менш чудове, коли вам потрібна міцна база коду та артефакти багаторазового використання.
  • Загорнуто в клас Python з конструктором та методами. Це життєздатна альтернатива, однак, я не бачу, як простий акт створення мережевої архітектури на основі ряду гіперпараметрів заслуговує на клас. Немає держави, яку можна зберегти, і єдиною поведінкою є побудова моделі.
  • Як функція, яка приймає гіперпараметри моделі (вхідні/вихідні форми, кількість і розмір шарів, параметри регуляризації тощо) як аргументи та повертає об'єкт Model.

Пакет keras.applications має набір моделей глибокого навчання, які відповідають третьому варіанту.

Я рекомендую мати якомога менше обов’язкових параметрів, а решту встановити на розумні значення за замовчуванням. Ось так я вважаю, що Keras API розроблений загалом, тому добре розширити це і на код простору користувача.

Окреме визначення моделі від компіляції та навчання¶

Аргумент виглядає наступним чином: маючи модель, визначену окремо, ми можемо пізніше вирішити тренувати її за допомогою того чи іншого оптимізатора, а також "заморожувати" частини моделі.