Организация проекта с Tensorflow.keras. Должен ли один подкласс tf.keras.Model? - PullRequest
0 голосов
/ 04 ноября 2019

Я использую Tensorflow 1.14 и API tf.keras для создания ряда (> 10) различных нейронных сетей. (Мне также интересны ответы на этот вопрос с помощью Tensorflow 2). Мне интересно, как мне организовать свой проект.

Я конвертирую модели keras в оценки, используя tf.keras.estimator.model_to_estimator и Tensorboard для визуализации. Я также иногда использую model.summary(). Каждая из моих моделей имеет число (> 20) гиперпараметров и принимает в качестве входных данных один из трех типов входных данных. Я иногда использую оптимизацию гиперпараметров, так что я часто вручную удаляю модели и использую tf.keras.backend.clear_session(), прежде чем пробовать следующий набор гиперпараметров.

В настоящее время я использую функции, которые принимают гиперпараметры в качестве аргументов и возвращают соответствующую модель скомпилированного кераса, которая будет превращена в оценщик. Я использую три разных сценария "Main_Datatype.py" для обучения моделей для трех разных типов входных данных. Все данные загружаются из файлов .tfrecord, и для каждого типа данных имеется функция ввода, которая используется всеми оценщиками, принимающими данные этого типа в качестве входных данных. Я переключаюсь между моделями (то есть функциями, возвращающими модель) в сценариях Main. У меня также есть несколько строительных блоков, которые являются частью более чем одной модели, для которых я использую вспомогательные функции, которые возвращают их, объединяя окончательный результат с помощью функционального API Keras.

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

Вопрос: Должен ли я использовать подклассы tf.keras.Model вместо использования функций для построения моделей или классов Pythonчто их заключает в капсулу? Разрушит ли подклассы keras.Model (или потребует много работы для включения) какую-либо функциональность, которую я использую с оценками keras и тензорной доской? Я видел много проблем, возникающих у людей с использованием пользовательских классов Model, и я неохотно вкладываю их в работу только для того, чтобы понять, что она не работает для меня. У вас есть другие предложения, как лучше организовать мой проект?

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

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

  1. tf.keras Последовательный API
  2. tf.keras Функциональный API
  3. Подкласс tf.keras.Model
1 голос
/ 04 ноября 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...