Keras 3.0 известен как Keras Core и был запущен в 2023 году. В этом блоге мы рассмотрим основы Keras 3.0 с примерами кода.

Начнем с установки Keras 3.0. Чтобы установить последнюю версию Keras, используйте следующий код:

!pip install -q keras-core

Keras 3.0 также поддерживает Tensorflow, Torch и Jax. Мы будем использовать «Jax» в качестве бэкенда для этого блога. Чтобы использовать «Jax» в качестве бэкэнда для ядра Keras, используйте следующий код:

import numpy as np
import os
os.environ["KERAS_BACKEND"] = "jax"
import keras_core as keras

Загрузка набора данных

После того, как мы импортировали все необходимые модули, давайте начнем загружать набор данных для базовой модели. Для этой цели мы будем использовать набор данных mnist. Чтобы загрузить набор данных и разделить его для обучения и тестирования, используйте следующий код:

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
x_train = np.expand_dims(x_train, -1)
x_test = np.expand_dims(x_test, -1)
print("x_train shape:", x_train.shape, " Train samples: ", x_train.shape[0])
print("y_train shape:", y_train.shape, "Testing samples: ", x_test.shape[0])

Построить модель

После загрузки набора данных давайте создадим базовую модель для обучения. Вы можете добавлять слои, используя keras.layers.<layer_name>

Давайте построим базовую модель, которая будет обучаться на наборе данных mnist, и мы также будем использовать ее для прогнозов.

# Model parameters
num_classes = 10
input_shape = (28, 28, 1)

model = keras.Sequential(
    [
        keras.layers.Input(shape=input_shape),
        keras.layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
        keras.layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
        keras.layers.MaxPooling2D(pool_size=(2, 2)),
        keras.layers.Conv2D(128, kernel_size=(3, 3), activation="relu"),
        keras.layers.Conv2D(128, kernel_size=(3, 3), activation="relu"),
        keras.layers.GlobalAveragePooling2D(),
        keras.layers.Dropout(0.5),
        keras.layers.Dense(num_classes, activation="softmax"),
    ]
)

Вы можете просмотреть модель, используя следующий код:

print(model.summary())

После построения модели давайте скомпилируем модель, чтобы проверить, есть ли какие-либо ошибки или не совпадают ли какие-либо слои с вводом-выводом. Затем обучите модель для `n` эпох. Для этого используйте следующий код:

model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(),
    optimizer=keras.optimizers.Adam(learning_rate=1e-3),
    metrics=[
        keras.metrics.SparseCategoricalAccuracy(name="acc"),
    ],
)

batch_size = 128
epochs = 15

callbacks = [
    keras.callbacks.ModelCheckpoint(filepath="model_at_epoch_{epoch}.keras"),
    keras.callbacks.EarlyStopping(monitor="val_loss", patience=2),
]

model.fit(
    x_train,
    y_train,
    batch_size=batch_size,
    epochs=epochs,
    validation_split=0.15,
    callbacks=callbacks,
)
score = model.evaluate(x_test, y_test, verbose=0)

После обучения используйте следующий код для прогнозирования:

predictions = model.predict(x_test)

Это очень простая модель, чтобы понять, как мы можем использовать Keras 3.0 (ядро Keras) для построения новой модели и использования ее для прогнозирования.