Компиляция моделей Keras с помощью многопроцессорной обработки Python - PullRequest
0 голосов
/ 17 апреля 2019

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

Теперь фактическое обучение, вероятно, придется проводить последовательно, так как я не знаю, как виртуализировать GPU, но по крайней мере компиляция может быть распараллелена.

Нечто подобное может помочь:

def build_model(hyper_param_dict):

    model = Sequential()
    ...
    adding layers and such
    ...
    model.compile(
        optimizer=tf.train.AdamOptimizer(hyper_param_dict['learning_rate']),
              loss=hyper_param_dict['loss'],
              metrics=selected_metrics)

worker_pool = Pool(4)
models = worker_pool.map(build_model, param_dictionaries_list)

Проблема в том, что это не так. Вызов метода карты приводит к исключению:

multiprocessing.pool.MaybeEncodingError: Error sending result: '[<tensorflow.python.keras.engine.sequential.Sequential object at 0x000001F87E929EB8>]'. Reason: 'NotImplementedError('numpy() is only available when eager execution is enabled.',)'

А переписывание кода для использования starmap(), imap() или map_async() приводит к той же ошибке или ее небольшим изменениям.

Но мне трудно поверить, что такая простая и, возможно, необходимая функциональность будет заблокирована керасом.

Я что-то упустил? Как правильно это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...