Как передавать выходные данные из одной модели в другую в режиме глубокого обучения с использованием Keras

#machine-learning #keras #deep-learning #data-science

Вопрос:

Я хочу взять вывод «model_stage_1» и объединить его с другими данными в качестве входных данных для другой модели. Ниже приведен мой подход.

 model_stage_1 = Model(inputs=[audio_input, text_input], outputs=[audio_text])

 --- some other part of the model--
audio_x2 = Conv1D(filters=128, kernel_size=8, activation='relu')(audio_input)
audio_x2 = Dense(32)(audio_x2)

pic_x = Conv2D(32, kernel_size=(3, 3), padding="same")(pic_input)
pic_x = Dense(32)(pic_x)

[stage_1_output] = model_stage_1.outputs 

pic_audio_text = concatenate([stage_1_output, pic_x, audio_x2])
pic_audio_text = Dense(32)(pic_audio_text)
out = Dense(laugh_output_dim, activation='sigmoid')(pic_audio_text)

model = Model(inputs=[audio_input, pic_input, text_input], outputs=[out])
model.compile(optimizer=opt, loss="binary_crossentropy", metrics=['accuracy'])
 

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

Комментарии:

1. две вещи кажутся сомнительными: (1) Зачем компилировать model_stage_1; планируете ли вы вызывать его отдельно от «модели»? Я не уверен, что TF будет жаловаться. (2) Будет ли «объединение» работать, если текст, аудио и видео имеют очень разные формы?

2. @MarkLavin Вы правы. Этап компиляции не требуется. Вопрос изменился. Спасибо, что указали на это. Но для 2-го вопроса конкатенация будет работать здесь, так как формы в конце одинаковы

3. Насколько я знаю, это правильный путь. Альтернативой было бы использование функционального API keras.