Обучение различным результатам в разные эпохи

Возможно ли в Керасе, чтобы обучение каждого или некоторых выходов в многовыводном обучении начиналось в разные эпохи? Например, один из выходов принимает на вход некоторые другие выходы. Но эти результаты в начале довольно преждевременны, и это приводит к огромным вычислительным нагрузкам на модель. Этот вывод, который я хотел бы, чтобы его обучение было отложено на некоторое время позже, представляет собой настраиваемый слой, который должен применять некоторые операции обработки изображения к своему входу, который представляет собой изображение, сгенерированное другим выходом, но в начале это сгенерированное изображение совершенно бессмысленно, Я думаю, что для первых эпох применять этот пользовательский слой просто пустая трата времени. Есть ли способ сделать это? Так же, как у нас есть весовые коэффициенты для потерь каждого выхода, есть ли у нас разные исходные точки для расчета потерь каждого выхода?


person Hamed    schedule 08.10.2019    source источник


Ответы (1)


  1. Создайте модель, которая не содержит более поздних выходных данных.
  2. Обучите эту модель до нужной вам степени.
  3. Создайте новую модель, которая включает в себя старую модель.
  4. Скомпилируйте новую модель с новыми функциями потерь, которые вы хотите.
  5. Обучите эту модель.

Чтобы уточнить шаг 3: модели Keras можно использовать как слои в функциональном API Keras.

Вы можете построить нормальную модель следующим образом:

input = Input((100,))
x = Dense(50)(input)
x = Dense(1, activation='sigmoid')(x)
model = Model(input, x)

Однако, если у вас есть другая стандартная модель Keras, ее можно использовать так же, как и любой другой слой. Например, если у нас есть модель (созданная с помощью Sequential(), Model() или keras.models.load_model()) с именем model1, мы можем поместить ее следующим образом:

input = Input((100,))
x = model1(input)
x = Dense(1, activation='sigmoid')(x)
model = Model(input, x)

Это было бы эквивалентно добавлению каждого слоя в model1 по отдельности.

person The Guy with The Hat    schedule 08.10.2019
comment
Я подумал об использовании весов обученной модели без последнего вывода и использовании их в новой модели. Вы имеете в виду это? Или я загружаю эту модель и подключаю ее ко входу последнего слоя? Благодарю вас! - person Hamed; 09.10.2019
comment
@Hamed Загрузите модель и подключите ее к любым выходам/входам, которые вы хотите. Смотрите мою правку. - person The Guy with The Hat; 09.10.2019