Тренинг разных выходов в разные эпохи - PullRequest
0 голосов
/ 09 октября 2019

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

1 Ответ

1 голос
/ 09 октября 2019
  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 индивидуально.

...