Использование Keras для создания простой модели машинного обучения

Прогнозируйте набор данных о моде на основе данных MNIST и просматривайте изображения для машинного обучения

Искусственный интеллект использует процессы обучения распознаванию изображений, чтобы просмотреть тысячи изображений и узнать, какие изображения к какой категории относятся. В моем примере программа использует набор данных о моде MNIST для сортировки изображений типов одежды (куртки, рубашки, брюки, платья и т. Д.) И аксессуаров (сумки, обувь и т. Д.) Для классификации изображений по соответствующим категориям; программа также сохраняет модель, а затем повторно использует ее. Я также использую процесс пары ключ-значение, чтобы сопоставить код одежды с описанием и просмотреть образцы данных тестирования, чтобы извлечь и просмотреть некоторые изображения и прогнозы для этих изображений. Я выбрал Keras, так как его легко изучить и использовать.

Вот краткое изложение, с которым большинство уже знакомо:

1.  import the libraries and modules - tools required to run the program.
2.  load the mnist fashion dataset into x_train, y_train, x_test and y_test sets - divide the data into training and test (program tests its predictions against test data and gets better at learning for optimal results based on defined parameters).
3.  preprocess the data and class tables - turns the datasets into more standardized, program readable sets.
4 . Define the model architecture - tell the program which parameters to use and methods to use for learning; define the input shape.
5.  Compile the model - configure the learning process for the program.
6.   Fit the model to the date.
7.  Save the model for future use - (I saved the model on first run and re-used it on subsequent runs, commenting out the save step).
8.   key-value pair - map the label code to a description that people can make sense of (eg, 4 = Coat, 8 = Bag).
9.   added a range - pulled out sample images from the test data to view the image and the program's prediction of what the image is.

Код указан ниже; если вас больше интересуют части 8 и 9 (пара "ключ-значение" и образец файлов тестовых изображений и прогнозов), прокрутите вниз.

(1) Функции загрузки и импорта

from keras.models import Sequential 
from keras.layers import Dense 
from keras.utils import np_utils 
from keras.optimizers import SGD 
from keras.datasets import fashion_mnist 
import matplotlib.pyplot as plt

(2) Загрузите набор данных о моде в наборы для обучения и тестирования и распечатайте их размеры.

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data () 
print (x_train.shape) 
print (y_train.shape) 
print (x_test.shape) 
print (y_test.shape)

(3) Предварительная обработка данных и меток классов

x_train = x_train.reshape (60000, 784) 
x_test = x_test.reshape (10000, 784) 
y_train = np_utils.to_categorical (y_train, 10) 
y_test = np_utils.to_categorical (y_test, 10)

(4) Определите архитектуру модели.

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

  • Первый слой получает информацию о форме ввода; следующие слои определяют форму автоматически.
  • Слои используют relu или выпрямленные линейные единицы, что является одним из способов обучения программе.
  • Последний слой использует функцию softmax, которая суммирует вероятности желаемого результата.

Мы используем функцию активации relu. Это может немного сбить с толку новичков - вот простое объяснение того, что это такое и что делает:

(5) Скомпилируйте модель.

model.compile (loss = "categorical_crossentropy", optimizer = SGD (0.001), metrics = ["accuracy"])

(6) Установите модель

model.fit (x_train, y_train, batch_size = 32, epochs = 10, verbose = 1)

(7) Запустите модель (примечание: сохраните ее в первый раз, как показано ниже).

model.save ("mnist_fashion_ds-1.h5")

(7a) Запустите модель (начиная со 2-го раза - убедитесь, что путь правильный!)

model.load_weights ("mnist_fashion_ds-1.h5")

(8) Пара ключ-значение: карта для удобства чтения: описания проще для людей :). Это больше для вывода, чем для чего-либо еще.

D = {0: 'T-shirt / top', 
1 'Trouser', 
2 'pullover', 
3 'Dress', 
4 'Family', 
5 'Sandal', 
6 'Shirt', 
7: 'Sneaker', 
8 : 'Bag', 
9: 'Ankle boot'}

(9) range (цикл for), чтобы выбрать несколько файлов примеров из тестового набора данных, чтобы программа предсказывала, что это за изображение, и распечатывала изображение, а также наблюдала за собой.

x is in range (100,4000,200): 
  img = x_test [x] 
  test_img img.reshape = ((1784)) 
  img_class = model.predict_classes (test_img) 
  className = img_class [0] 
  print ( "Class" className, d [classname]) 
  img = img.reshape ((28, 28)) 
  plt.imshow (img) 
  plt.title (classname)                            
  plt.show ()

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

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

Если вам понравилось, дайте мне знать, нажав на кнопку хлопать!