Модель Keras 1.2.2 внутри другой модели - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть рабочий фрагмент кода Keras 2.3, который собирает: кодер, декодер и объединяет их в одну модель (автоэнкодер) с использованием Functional API, и этот метод:

def merge_encoder_decoder(encoderModel, decoderModel):
    input_img = encoderModel.input
    output = decoderModel(encoderModel.output)
    return Model(input_img, output)

Это делается, когдаЯ тренирую объединенную модель, веса также обновляются в моделях кодера и декодера. Мне нужно такое поведение, поскольку я использую один кодер в более позднем процессе.

Теперь я хочу попытаться распределить процесс обучения этой модели по кластеру Hadoop. Для этого я выбрал инфраструктуру Analytics Zoo (0.6.0), которая позволяет распределенное обучение с использованием Spark и предоставляет некоторые API высокого уровня для построения моделей.

Моя проблема: Analytics Zooподдерживает до Keras 1.2.2, и я не могу найти способ воспроизвести поведение моей функции merge_encoder_decoder в этой версии. В частности, в Keras 1.2.2 функциональные модели, по-видимому, не имеют атрибутов «.input» и «.output» (которые должны возвращать соответствующие тензоры), и я не нашел документации об этих атрибутах вДокументация Keras 2.3 тоже.

Так есть ли способ сделать то, что я хочу в Keras 1.2.2?

Спасибо

1 Ответ

0 голосов
/ 07 ноября 2019

Попробуйте использовать собственный явный слой ввода:

def merge_encoder_decoder(encoderModel, decoderModel):
    input_img = layers.Input(image_shape)
    z = encoderModel(input_img)
    output = decoderModel(z)
    return models.Model(input_img, output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...