Метод compile
Метод compile применяется к объекту модели Keras и
подготавливает ее к обучению. Первым параметром
передается оптимизатор (например, 'adam' или
экземпляр tf.keras.optimizers.Adam). Вторым
параметром указывается функция потерь loss,
третьим - список метрик metrics для
отслеживания качества. Без вызова этого метода
обучение через fit невозможно.
Синтаксис
model.compile(optimizer, loss, [metrics])
Пример
Давайте создадим простую модель и настроим ее
для обучения с оптимизатором adam,
функцией потерь mse и метрикой mae:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(
optimizer='adam',
loss='mse',
metrics=['mae']
)
print(model.optimizer)
print(model.loss)
Результат выполнения кода:
<keras.src.optimizers.adam.Adam object at 0x...>
mse
Пример
Давайте передадим в compile экземпляр
оптимизатора с заданной скоростью обучения:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
opt = tf.keras.optimizers.Adam(learning_rate=0.01)
model.compile(
optimizer=opt,
loss='mean_squared_error',
metrics=['mae', 'mse']
)
print(model.optimizer.learning_rate)
print(model.metrics)
Результат выполнения кода:
<tf.Variable 'learning_rate:0' shape=() dtype=float32, numpy=0.01>
[<keras.src.metrics.regression_metrics.MeanAbsoluteError object at 0x...>, <keras.src.metrics.regression_metrics.MeanSquaredError object at 0x...>]
Пример
Давайте настроим модель для задачи классификации
с функцией потерь categorical_crossentropy:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, activation='softmax', input_shape=(4,))
])
model.compile(
optimizer='sgd',
loss='categorical_crossentropy',
metrics=['accuracy']
)
print(model.loss)
print(model.metrics)
Результат выполнения кода:
categorical_crossentropy
[<keras.src.metrics.accuracy_metrics.CategoricalAccuracy object at 0x...>]