Метод 1: использование встроенной функции потерь
Keras предоставляет широкий спектр встроенных функций потерь, которые можно использовать непосредственно во время компиляции модели. Вот пример:
from tensorflow import keras
model = keras.Sequential()
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
В этом примере функция категориальной перекрестной энтропии используется для задачи классификации нескольких классов.
Метод 2: пользовательская функция потерь
Вы также можете определить свою собственную функцию потерь в Keras. Вот пример пользовательской функции потерь среднеквадратической ошибки:
from tensorflow import keras
import tensorflow as tf
def custom_loss(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred))
model = keras.Sequential()
model.add(keras.layers.Dense(1))
model.compile(loss=custom_loss, optimizer='sgd')
В этом примере функция custom_loss вычисляет среднеквадратическую ошибку между истинными метками (y_true
) и прогнозируемыми метками (y_pred
).
Метод 3: функция потерь с параметрами
Некоторые функции потерь имеют параметры, которые можно настроить. Например, двоичная функция кросс-энтропийных потерь имеет параметр from_logits
, который определяет, являются ли входные данные распределением вероятностей или логит-значениями. Вот пример:
from tensorflow import keras
model = keras.Sequential()
model.add(keras.layers.Dense(1))
model.compile(loss=keras.losses.BinaryCrossentropy(from_logits=True), optimizer='adam')
В этом примере функция двоичной перекрестной энтропии используется с from_logits=True
.
Метод 4: несколько функций потерь
Keras также позволяет использовать несколько функций потерь одновременно. Это может быть полезно при работе со сценариями многозадачного обучения. Вот пример:
from tensorflow import keras
model = keras.Sequential()
model.add(keras.layers.Dense(10, activation='softmax'))
model.add(keras.layers.Dense(1))
model.compile(loss=['categorical_crossentropy', 'mse'], optimizer='adam')
В этом примере модель имеет два выходных сигнала: первый выходной результат использует категориальную перекрестную энтропийную потерю, а второй выходной результат использует среднеквадратическую ошибку потери.
В заключение в этой статье обсуждались несколько методов задания функции потерь в Keras. Мы рассмотрели использование встроенных функций потерь, определение пользовательских функций потерь, использование функций потерь с параметрами и включение нескольких функций потерь. Понимая эти методы, вы сможете эффективно скомпилировать модели Keras с соответствующей функцией потерь для вашей конкретной задачи.