Название | Нейросети начало |
---|---|
Автор произведения | Джейд Картер |
Жанр | |
Серия | |
Издательство | |
Год выпуска | 2023 |
isbn |
Описание процесса.
Импортируем необходимые модули из TensorFlow.
Создаем модель, используя сверточные нейронные сети. Модель принимает входные данные в виде изображения размером 48х48х1 пикселей. Слои Conv2D, BatchNormalization и MaxPooling2D используются для извлечения признаков из изображения. Слой Flatten преобразует полученные признаки в одномерный вектор. Слои Dense, BatchNormalization и Dropout используются для классификации эмоций на 7 категорий (счастье, грусть, злость и т.д.).
Компилируем модель, указываем оптимизатор, функцию потерь и метрики.
Обучаем модель на обучающем наборе данных с использованием валидационного набора.
Оцениваем точность модели на тестовом наборе данных.
Используем модель для предсказания эмоций на новых данных.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# Создание модели
model = keras.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(48, 48, 1)),
layers.BatchNormalization(),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Dropout(0.25),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.BatchNormalization(),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Dropout(0.25),
layers.Conv2D(128, (3, 3), activation='relu'),
layers.BatchNormalization(),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Dropout(0.25),
layers.Flatten(),
layers.Dense(256, activation='relu'),
layers.BatchNormalization(),
layers.Dropout(0.5),
layers.Dense(7, activation='softmax')
])
# Компиляция модели
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Обучение модели
history = model.fit(train_data, train_labels, epochs=50, validation_data=(val_data, val_labels))
# Оценка модели
test_loss, test_acc = model.evaluate(test_data, test_labels)
print('Test accuracy:', test_acc)
# Использование модели
predictions = model.predict(new_data)
Этот код создает сверточную нейронную сеть для распознавания эмоций на изображениях размером 48x48 пикселей.
В первом слое используется свертка с 32 фильтрами размера 3x3 и функцией активации ReLU, которая принимает входные изображения размера 48x48x1. Затем следуют слои нормализации пакетов, максимальной пулинги с размером фильтра 2x2 и dropout, который помогает предотвратить переобучение.
Далее добавлены два дополнительных сверточных слоя с увеличенным числом фильтров и аналогичными слоями нормализации и dropout. После этого следует слой сглаживания, который преобразует многомерный вход в одномерный вектор.
Затем следуют два полносвязных слоя с функцией активации ReLU и функцией нормализации пакетов, а также слои dropout. Последний слой содержит 7 нейронов и использует функцию активации softmax для определения вероятности каждой из 7 эмоций.
Для компиляции модели используется оптимизатор adam, функция потерь categorical_crossentropy и метрика accuracy. Модель обучается на тренировочных данных в течение 50 эпох с валидацией на проверочных данных.
После обучения модели оценивается на тестовых данных и выводится точность предсказаний. Затем используется модель для предсказания эмоций на новых данных.