Особенности Keras / keras 8

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В этом материале обсудим некоторые особенности Keras. Также выполним классификацию рукописных цифр с помощью набора данных MNIST, используя Keras и его возможности.

Что такое Keras?

Keras — это библиотека нейронной сети в Python, использующая в качестве бэкенда TensorFlow, Microsoft CNTK или Theano. Ее можно установить вместе с движком с помощью PyPl.

pip install Keras  pip install tensorFlow  

Зачем учить Keras?

Keras делает акцент на пользовательском опыте. С ее помощью пользователь может писать минимум кода для выполнения основных операций. Библиотека модульная и расширяемая. Модели и части кода можно использовать повторно и расширять в будущем.

Особенности Keras

Рассмотрим главные особенности Keras, из-за которых ее стоит учить:

1. Наборы помеченных данных

В Keras много помеченных наборов данных, которые можно импортировать и загрузить.

Пример: классификация небольших изображений CIFAR10, определение тональности рецензий IMDB, классификация новостных тем Reuters, рукописные цифры MNIST и некоторые другие (это лишь примеры самых известных наборов).

Для загрузки набора MNIST нужны следующие команды:

from Keras.datasets import mnist  (X_train, y_train), (X_test, y_test) = mnist.load_data()  

2. Многочисленные реализованные слои и параметры

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

Большая новогодняя распродажа

Загрузим эти требуемые слои для построения классификатора цифр.

from keras.models import Sequential  from keras.layers import Dense  from keras.layers import Dropout  from keras.layers import Flatten  from keras.optimizers import Adam  from keras.utils import np_utils  

Keras также поддерживает одно- и двухмерные сверточные и рекуррентные нейронные сети. Для классификатора используем сверточную нейронную сеть (слой Conv2D).

from keras.layers.convolutional import Conv2D  from keras.layers.convolutional import MaxPooling2D  

3. Методы для предварительной обработки данных

В Keras также масса методов для предварительной обработки. Будем использовать метод Keras.np_utils.to_categorical() для унитарной кодировки y_train и y_test.

Перед этим изменим форму и нормализуем данные в соответствии с требованиями.

# изменение размерности  X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], X_train.shape[2], 1).astype('float32')  X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], X_test.shape[2], 1).astype('float32')    # нормализация, чтобы получить данные в диапазоне 0-1  X_train/=255  X_test/=255    number_of_classes = 10  y_train = np_utils.to_categorical(y_train, number_of_classes)  y_test = np_utils.to_categorical(y_test, number_of_classes)  

4. Метод add() в Keras

Для добавления импортированных слоев используется метод add() с дополнительными параметрами.

model = Sequential()  model.add(Conv2D(32, (5, 5), input_shape=(X_train.shape[1], X_train.shape[2], 1), activation='relu'))  model.add(MaxPooling2D(pool_size=(2, 2)))  model.add(Conv2D(32, (3, 3), activation='relu'))  model.add(MaxPooling2D(pool_size=(2, 2)))  model.add(Dropout(0.5))  model.add(Flatten())  model.add(Dense(128, activation='relu'))  model.add(Dropout(0.5))  model.add(Dense(number_of_classes, activation='softmax')  

5. Метод compile()

Перед тренировкой нужно настроить процесс обучения, что делается с помощью метода compile().

model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])  

6. Метод fit()

Тренировка моделей Keras происходит с помощью массивов и метода fit().

model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=200)  

Тренировка занимает некоторое время. В данном случае прошло всего 5 epocs, но их число можно увеличить.

Тренировка выглядит вот так:

Тренировка моделей Keras

7. Оценка модели

После тренировки модели результаты проверяются на новых данных или с помощью predict_classes() или evaluate().

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

  • Профессия Data? ?Scientist
  • Профессия Data? ?Scientist

Но сперва его нужно конвертировать в формат набора MNIST.

Этот формат представляет собой черно-белые изображения 28*28*1.

import cv2  img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)    resized = cv2.resize(img, (28,28), interpolation = cv2.INTER_AREA)  img = np.resize(resized, (28,28,1))  im2arr = np.array(img)  im2arr = im2arr.reshape(1,28,28,1)  y_pred = model.predict_classes(im2arr)  print(y_pred)  
7  

8. Модульность

Keras является модульным, поэтому можно сохранить модель и тренировать ее позже.

Это делается вот так:

model.save('model.h5')  

Выводы

Это основные особенности Keras. Рассмотрели их на примере базовых операций: загрузки набора данных, построения модели, добавления параметров, компиляции, тренировки и оценки. С помощью этой статьи у вас была возможность создать собственный классификатор рукописных цифр на основе набора данных MNIST. Этот пример показывает, что проекты глубокого обучения могут состоять всего из 10 строк кода.


Источник: pythonru.com

Комментарии: