Как я могу повысить точность и уменьшить loss моей нейронной сети Keras/Tensorflow при обучении на наборе данных MNIST с кириллическими буквами?

Когда я запускаю обучение модели, я получаю высокий loss и низкий val_accuracy

Я использую dataset Кириллицы MNIST


import tensorflow as tf
from keras import layers, models, optimizers
from keras.optimizers import SGD
# Загрузка датасета
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    'C:/job/dataset/Cyrillic/',
    validation_split=0.2,
    subset="training",
    seed=123,
    image_size=(64, 64),
    batch_size=32)

val_ds = tf.keras.preprocessing.image_dataset_from_directory(
    'C:/job/dataset/Cyrillic/',
    validation_split=0.2,
    subset="validation",
    seed=123,
    image_size=(64, 64),
    batch_size=32)

num_classes = 33
# Нормализация данных
normalization_layer = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)
train_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))
val_ds = val_ds.map(lambda x, y: (normalization_layer(x), y))

# Создание модели с несколькими слоями
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Dropout(0.25))
model.add(layers.Flatten())
model.add(layers.Dense(1, activation='relu'))
model.add(layers.Dense(33, activation='softmax'))


# Компиляция модели
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
# model.compile(loss = "categorical_crossentropy", optimizer = opt)
model.compile(loss='sparse_categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])
# Обучение модели
history = model.fit(train_ds, validation_data=val_ds, epochs=30)

# Сохранение модели
model.save("model/model.h5")

Epoch 1/30 362/362 [==============================] - 49s 134ms/step - loss: 3.4878 - accuracy: 0.0373 - val_loss: 3.4824 - val_accuracy: 0.0353

Epoch 2/30 362/362 [==============================] - 45s 125ms/step - loss: 3.4806 - accuracy: 0.0377 - val_loss: 3.4803 - val_accuracy: 0.0353

Я пробовал разные оптимизаторы, ничего не помогает Я хочу понять, что я делаю не так?


Ответы (0 шт):