Пошаговое руководство по созданию нейронной сети с помощью TensorFlow
Если вы новичок в искусственных нейронных сетях, вы можете проверить мой блог «Введение в ИНС» по ссылке ниже.
В этом руководстве мы построим искусственную нейронную сеть на наборе данных Fashion MNIST, который состоит из 70 000 изображений, из которых 60 000 изображений относятся к обучающему набору, а 10 000 изображений относятся к набору тестов. Каждое изображение имеет высоту 28 пикселей и ширину 28 пикселей, всего 784 пикселя с десятью связанными с ними ярлыками. Значение пикселя - это целое число от 0 до 255. Каждая строка представляет собой отдельное изображение, и у нас есть 785 меток столбцов, включая одну метку класса. В этом наборе данных каждое изображение связано с одной из меток, упомянутых ниже.
- 0 → Футболка / топ
- 1 → Брюки
- 2 → Пуловер
- 3 → Платье
- 4 → Пальто
- 5 → Сандалии
- 6 → Рубашка
- 7 → Кроссовки
- 8 → Сумка
- 9 → Ботинки по щиколотку
Установка Tensorflow
Вы можете использовать Google Colab, если на вашем ПК или ноутбуке нет графического процессора, или вы можете использовать Jupyter Notebook. Если вы используете свою систему, обновите pip, а затем установите TensorFlow следующим образом
Импортировать зависимости
В приведенных выше строках кода я просто импортировал все библиотеки, которые мне понадобятся в процессе.
Данные
Загрузка набора данных
Здесь мы загрузим набор данных Fashion mnist с помощью метода load_data ().
Нормализация
Здесь мы делим каждое изображение на максимальное количество пикселей (255), чтобы диапазон изображений был между 0 и 1. Мы нормализуем изображения, чтобы наши модели ИНС обучались быстрее.
Изменение формы
Мы получим 2d-массив в качестве вывода, в котором первое измерение соответствует индексу изображения, а второе измерение будет вектором, содержащим все пиксели изображения.
В массиве 2d мы изменим двумерный массив на одномерный вектор, используя изменение формы. Здесь мы передаем два аргумента
- -1 → нам нужно изменить форму всех изображений
- 28 * 28 → Размер результирующего вектора (784 пикселя → 1D)
Построение ИНС
Первое, что нам нужно сделать перед построением модели, - это создать сам объект модели, этот объект будет экземпляром класса с именем Sequential.
Добавление первого полностью связанного слоя
Если вы не знаете о типах слоев и их функциях, я бы порекомендовал вам проверить мой блог «Введение в ИНС», который позволяет вам узнать большинство концепций, о которых вам следует знать.
Гиперпараметры:
- количество нейронов: 128
- функция активации: ReLU
- input_shape: (784,)
Это означает, что на выходе этой операции должно быть 128 нейронов, в которых мы применяем функцию активации ReLU для нарушения линейности, а input_shape равен (784,). Мы добавляем все эти гиперпараметры с помощью метода model.add ().
Добавление слоя исключения
Это метод регуляризации, при котором мы случайным образом обнуляем нейроны в слое. Таким образом, некоторый процент нейронов не будет обновляться, весь процесс обучения будет долгим, и у нас будет меньше шансов на переобучение.
Добавление выходного слоя
- units = количество классов (10 в случае Fashion MNIST)
- Activation = softmax (Возвращает вероятность класса)
Составление модели
Это означает, что мы должны подключить к оптимизатору всю сеть и выбрать потерю. Оптимизатор - это инструмент, который обновляет веса во время стохастического градиентного спуска, то есть переносит ваши потери в нейронную сеть.
Обучение модели
Мы используем метод model.fit () для обучения модели, мы передаем три аргумента внутри метода, которые
input → x_train - это вход, который подается в сеть
output → это содержит правильные ответы для x_train, то есть y_train
no.of.epochs → Это означает, сколько раз вы собираетесь обучать сеть с помощью набора данных.
Оценка модели
Мы собираемся оценить производительность модели, применив ее к тестовой выборке. здесь метод оценки возвращает два аргумента: один - это потери, понесенные в тестовом наборе из-за прогноза, а другой - точность.
Мы достигли точности 87,2% наших данных. На этом пока все, надеюсь, вы реализовали свою первую модель DeepLearning. В моем следующем блоге мы вместе реализуем модель MNIST с использованием сверточных нейронных сетей. Если вы хотите узнать о концепции сверточных нейронных сетей, ознакомьтесь с моим блогом ниже.