На этом шаге мы рассмотрим возможности по настройке процесса обучения.
После того как вы определились с архитектурой сети, нужно выбрать еще три параметра:
После выбора функции потерь, оптимизатора и метрик можно использовать встроенные методы compile() и fit(), чтобы начать обучение модели. При желании можно также реализовать собственные циклы обучения - мы позже расскажем, как это сделать. Пока же давайте взглянем на compile() и fit(). Метод compile() настраивает процесс обучения - вы уже познакомились с ним в самом первом примере нейронной сети на 26 шаге. Он принимает аргументы с оптимизатором, функцией потерь и метриками (в виде списка):
model = keras.Sequential([keras.layers.Dense(1)]) # Определение линейного классификатора model.compile(optimizer="rmsprop", # Определение оптимизатора по имени: # RMSprop (регистр имеет значение) loss="mean_squared_error", # Определение функции по имени: # среднеквадратичная ошибка metrics=["accuracy"]) # Определение списка метрик: # в данном случае только # accuracy (точность)
В этом примере методу compile() оптимизатор, функция потерь и список метрик передаются в виде строковых имен (например, "rmsprop"). В действительности данные строки являются ярлыками, преобразующимися в объекты Python. Например, "rmsprop" превращается в keras.optimizers.RMSprop(). Важно помнить, что вместо строк можно также передать экземпляры объектов, например:
model.compile(optimizer=keras.optimizers.RMSprop(), loss=keras.losses.MeanSquaredError(), metrics=[keras.metrics.BinaryAccuracy()])
Это удобно тем, кто хочет использовать собственные функции потерь или метрики или желает выполнить дополнительную настройку применяемых объектов, например передать аргумент learning_rate оптимизатору:
model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=1e-4), loss=my_custom_loss, metrics=[my_custom_metric_1, my_custom_metric_2])
Позднее мы рассмотрим, как создавать свои функции потерь и метрики. В общем случае нет необходимости прописывать функции потерь, метрики или оптимизаторы с нуля, поскольку Keras предлагает широкий спектр встроенных опций, среди которых наверняка найдется то, что вам нужно:
Далее вы увидите многие из этих вариантов в действии.
На следующем шаге мы рассмотрим выбор функции потерь.