Нейросети начало - страница 10

Шрифт
Интервал



4. Пример кода «Автоматическое определение эмоций».

Описание процесса.

Импортируем необходимые модули из 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, который помогает предотвратить переобучение.