Назад к книге «120 практических задач» [Джейд Картер]

120 практических задач

Джейд Картер

В книге представлены 120 задачч из различных областей, включая анализ данных, прогнозирование, классификацию, распознавание образов и другие. В каждой задаче рассматривается использование глубокого обучения и нейронных сетей для решения, включая выбор архитектуры модели, подготовку данных, обучение и оценку результатов. Примеры кода на Python помогают читателям легко освоить материал и применить его на практике.Книга предназначена для специалистов в области данных, исследователей, студентов и всех, кто интересуется применением современных методов глубокого обучения для решения разнообразных задач в науке, технологиях и бизнесе.

Джейд Картер

120 практических задач

1. Построение простой полносвязной нейронной сети для классификации

Задача: Классификация изображений рукописных цифр (MNIST).

Для построения простой полносвязной нейронной сети для классификации изображений рукописных цифр из набора данных MNIST можно использовать библиотеку TensorFlow и Keras.

```

Полносвязные нейронные сети, также известные как многослойные перцептроны (MLP), представляют собой вычислительные модели, вдохновленные биологическими нейронными сетями. Они состоят из слоев нейронов, которые преобразуют входные данные в выходные через последовательность взвешенных сумм и нелинейных функций активации. В полносвязных слоях каждый нейрон связан со всеми нейронами предыдущего слоя, что позволяет эффективно обучать модели для различных задач, включая классификацию изображений.

Для задачи классификации изображений рукописных цифр из набора данных MNIST используется полносвязная нейронная сеть. Датасет MNIST состоит из 60,000 обучающих и 10,000 тестовых изображений размером 28x28 пикселей, представляющих цифры от 0 до 9. Архитектура сети включает входной слой, преобразующий каждое изображение в одномерный массив длиной 784, один или несколько скрытых слоев с функцией активации ReLU для моделирования сложных зависимостей, и выходной слой с 10 нейронами, использующими функцию softmax для получения вероятностей классов.

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

Основные элементы модели включают полносвязные слои (Dense Layer), активационные функции (например, ReLU и softmax), функцию потерь (например, sparse_categorical_crossentropy) и оптимизатор (например, Adam). Полносвязные нейронные сети эффективны для задач классификации благодаря своей способности учиться на данных и выявлять сложные паттерны. В случае с MNIST, целью является обучение модели распознавать рукописные цифры, что достигается путем обучения на большом количестве примеров и корректировки весов нейронов для минимизации ошибки.

Код

```python

import tensorflow as tf

from tensorflow.keras import layers, models

import numpy as np

import matplotlib.pyplot as plt

# Загрузка и предобработка данных

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

train_images = train_images / 255.0

test_images = test_images / 255.0

train_images = train_images.reshape((60000, 28 * 28))

test_images = test_images.reshape((10000, 28 * 28))

# Создание модели

model = models.Sequential()

model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))

model.add(layers.Dense(10, activation='softmax'))

# Компиляция модели

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

# Обучение модели

model.fit(train_images, train_labels, epochs=5, batch_size=128)

# Оценка модели

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Точность на тестовых данных: {test_acc}")

Купить книгу «120 практических задач»

электронная ЛитРес 690 ₽