Делает модель.compile () инициализирует все веса и смещения в Keras (TensorFlow backend)?

когда я начинаю обучение модели, нет модели, сохраненной ранее. Я могу использовать model.compile() безопасно. Теперь я сохранил модель в h5 файл для дальнейшего обучения с помощью checkpoint.

скажите, Я хочу тренировать модель дальше. Я смущен в этот момент: могу ли я использовать model.compile() здесь? И должен ли он быть помещен до или после model = load_model() заявление? Если model.compile() повторно инициализирует все веса и смещения, я должен поместить его перед model = load_model() заявление.

после обнаружив некоторые дискуссии, мне кажется, что model.compile() требуется только тогда, когда у меня нет модели, сохраненной ранее. После того, как я сохранил модель, нет необходимости использовать model.compile(). Правда это или ложь? И когда я хочу предсказать с помощью обученной модели, я должен использовать model.compile() прежде чем предсказать?

1 ответов


когда использовать?

если вы используете compile, конечно, это должно быть после load_model(). В конце концов, вам нужна модель для компиляции.

что значит compile делать?

Compile определяет функции потерь, the оптимизатор и показатели. Вот и все.

Это не имеет ничего общего с весами, и вы можете скомпилировать модель столько раз, сколько хотите, не вызывая любая проблема к pretrained Весам.

вам нужна скомпилированная модель железнодорожный (потому что обучение использует функцию потерь и оптимизатор). Но нет необходимости составлять модель для прогнозирования.

вам нужно использовать compile более одного раза?

только если:

  • вы хотите изменить один из этих:
    • функции потерь
    • оптимизатор скорости / обучение
    • показатели
  • вы загрузили (или создали) модель, которая еще не скомпилирована. Или ваш метод load/save не учитывал предыдущую компиляцию.

последствия компиляции снова:

Если вы снова скомпилируете модель, вы потеряете оптимизатор государства.

Это означает, что ваше обучение будет страдать немного в начале, пока он не регулирует скорость обучения , мгновения и т. д. Но нет абсолютно никакого ущерба для Весов (если, конечно, ваша начальная скорость обучения настолько велика, что первый шаг обучения дико меняет тонко настроенные веса).