В этой статье мы узнаем следующее -

  • Создайте нейронную сеть с помощью Tensorflow и Keras
  • Обучите нейронную сеть, чтобы увидеть разницу между разными типами модных вещей.
  • Проверьте точность своей нейронной сети на тестовых изображениях.

Требования

Вещи, которые требуются для плавных процессов в этом пошаговом руководстве -

  1. Spyder на Anaconda Python
  2. Numpy
  3. Tensorflow
  4. Керас

Прежде чем мы начнем строить нашу нейронную сеть, нам нужно будет установить Tensorflow и Keras на Anaconda.

  • Убедитесь, что все экземпляры Anaconda закрыты (включая Anaconda Navigator, Spyder и Jupyter).
  • Откройте Anaconda Prompt на своем компьютере.
  • Введите в командной строке следующую команду:
conda install -c conda-forge tensorflow keras
  • Когда будет предложено «да» или «нет» (да / нет), введите «y» и нажмите Enter.
  • После завершения установки вы можете проверить, правильно ли он установлен. введите python3 в командной строке. Теперь вы сможете набирать код Python. Это будет обозначено символом «›››» в командной строке.
  • Введите import tensorflow как tf и нажмите Enter.
  • Если вы не получили никаких ошибок, то tenorflow установлен правильно.
  • Введите текст из кераса импорта тензорного потока и нажмите Enter.
  • Если вы не получили никаких ошибок, значит, keras установлен правильно.

Нейронные сети

Нейронная сеть - это математическая модель для реализации машинного обучения. Это чрезвычайно эффективный алгоритм оптимизации, совместимый с большим объемом данных.

Нейрон

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

Многослойный персептрон

Когда многие нейроны организованы как слои, и все нейроны одного слоя связаны со всеми нейронами другого слоя, вы получаете наиболее часто используемую форму нейронной сети, также называемую мульти- Слой персептрона (MLP).

Дополнительные уровни вычислений помогают следующим образом:

  • Добавьте нелинейности к математической проблеме, комбинируя нейроны, которые выполняют только линейные вычисления.
  • Извлеките функции из ввода, чтобы помочь ему лучше понять проблему. Извлечение элементов выполняется средними слоями, обычно называемыми скрытыми слоями.

Вес

Самая важная часть любой нейронной сети - это ее вес. Веса можно рассматривать как элемент хранения знаний нейронной сети.

Веса показывают силу связи между двумя нейронами. Если вес между нейроном A и нейроном B велик, связь сильная. Это означает, что нейрон B сильно зависит от выхода нейрона A. Небольшое изменение выхода нейрона A может резко изменить выход нейрона B.

Гири бывают двух типов:

  • Возбуждающий - нейрон A подталкивает выходной сигнал нейрона B к положительной стороне, также называемой положительным весом.
  • Тормозящий - нейрон A подталкивает выходной сигнал нейрона B к отрицательной стороне, также называемой отрицательным весом.

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

Обучение

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

Сеть изначально начинается со случайными весами - это означает, что сеть ничего не знает. Когда мы приводим ему пример, называемый обучающей выборкой, он пытается вычислить выходные данные, используя случайные веса, которые у него есть. Очевидно, что с первой попытки он выдаст неверный результат.

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

Он повторяет этот процесс для всех обучающих выборок, взятых из обучающего набора. Теперь сеть называется обученной. Это даст правильный результат для большинства обучающих выборок.

Хорошая нейронная сеть также должна обеспечивать правильный вывод для примеров, которых она никогда раньше не видела. Это означает, что нейронная сеть усвоила шаблон, а не конкретные обучающие примеры. Другими словами, нейронная сеть усвоила концепцию, а не просто выучила все ответы наизусть. Этот сценарий можно протестировать, проверив выходные данные нейронной сети на отдельном наборе примеров, который называется набором тестов. Он дает хорошее представление о том, как много нейронная сеть узнала.

База данных

Здесь мы попытаемся решить проблему с примером Tensorflow. Пример, который мы рассматриваем, есть в базе данных Fashion MNIST. Эта база данных содержит 70 000 изображений предметов одежды. Доступны следующие классы: Футболка / топ, Брюки, Пуловер, Платье, Пальто, Сандалии, Рубашка, Кроссовки, Сумка, Ботинки по щиколотку.

Эту базу данных можно загрузить напрямую с помощью команды keras. Итак, мы можем начать прямо сейчас.

Мы разделим базу данных на 60 000 обучающих изображений и 10 000 тестовых изображений.

Код -

# MIT License
# Copyright (c) 2017 François Chollet    
# Permission is hereby granted, free of charge, to any person 
# obtaining a copy of this software and associated documentation 
# files (the "Software"), to deal in the Software without 
# restriction, including without limitation the rights to use, 
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions: 
#      
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 
#      
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
    
import tensorflow as tf    
from tensorflow import keras    
import numpy as np    
import matplotlib.pyplot as plt 
       
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() 
   
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] 
train_images = train_images / 255.0    
test_images = test_images / 255.0
        
model = keras.Sequential([keras.layers.Flatten(input_shape=(28, 28)),keras.layers.Dense(128, activation=tf.nn.relu),   keras.layers.Dense(10, activation=tf.nn.softmax)])
model.compile(optimizer=tf.train.AdamOptimizer(),    loss='sparse_categorical_crossentropy',metrics=['accuracy'])        
print("\n\n[STATUS] TRAINING")
    
model.fit(train_images, train_labels, epochs=20)        
print("\n\n[STATUS] TESTING")    
test_loss, test_acc = model.evaluate(test_images, test_labels)    
print('Test accuracy:', test_acc)

Когда вы запустите код, построенная вами нейронная сеть будет обучена за 5 эпох. Затем обученная сеть будет протестирована на 10 000 тестовых изображений, после чего будет показана точность тестирования. Исходное руководство также показывает, как строить прогнозы для изображений.

Присоединяйтесь к FAUN: Веб-сайт 💻 | Подкаст 🎙️ | Twitter 🐦 | Facebook 👥 | Instagram 📷 | Группа Facebook 🗣️ | Группа Linkedin 💬 | Slack 📱 | Cloud Native Новости 📰 | Еще .

Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇