Скачать книгу

факторизацию для построения рекомендательной системы. Мы инициализировали матрицы пользователей и предметов случайными значениями и обучили их на основе известных рейтингов пользователей и предметов. Затем мы использовали полученные матрицы, чтобы прогнозировать рейтинги для всех пользователей и предметов, а затем рекомендовали предметы на основе этих прогнозов для конкретного пользователя. В реальных системах могут использоваться более сложные алгоритмы и более разнообразные данные.

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

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

      Затем следуют два полносвязных слоя с функцией активации ReLU и функцией нормализации пакетов, а также слои dropout. Последний слой содержит 7 нейронов и использует функцию активации softmax для определения вероятности каждой из 7 эмоций.

      Для компиляции модели используется оптимизатор adam, функция потерь categorical_crossentropy и метрика accuracy. Модель обучается на тренировочных данных в течение 50 эпох с валидацией на проверочных данных.

      После обучения модели оценивается на тестовых данных и выводится точность предсказаний. Затем используется модель для предсказания эмоций на новых данных.

Итог

Скачать книгу