Я использую 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, и я неохотно вкладываю их в работу только для того, чтобы понять, что она не работает для меня. У вас есть другие предложения, как лучше организовать мой проект?
Заранее большое спасибо.