Рубрики
Без рубрики

Учебник по глубокому обучению Keras

Учебное пособие Keras, Keras Deep Mountain, KERAS Пример, Пример KERAS Python, KERAS GPU, KERAS Tensorflow, Учебное пособие по углублению Keras, Keras Neural Network Model, модель Shared Vision Keras, Keras Python Tutorial.

Автор оригинала: Pankaj Kumar.

Что такое керас?

KERAS – это высокоуровневые нейронные сети API. Он написан в Python и может работать на вершине Theano, Tensorflow или CNTK. Это было разработано с идеей:

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

Первоначальное развитие KERAS было частью исследования проекта OneiROS (открытая операционная система неврологической интеллектуальной робота).

Почему керас?

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

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

Когда вы хотите поставить свои модели KERAS в некоторое приложение, вам нужно развернуть его на других платформах, которые сравнительно просты, если вы используете KERAS. Он также поддерживает несколько бэкэндов, а также позволяет переносимость по всему спинам топливо. Вы можете тренировать, используя одну бэкэнд и загрузить его другим.

Он получил сильную спину со встроенной поддержкой GPU, она также поддерживает распределенную тренировку.

Керс Учебник

Установка керас

Нам нужно установить одну из бэкэндских двигателей, прежде чем мы на самом деле добраться до установки KERAS. Пойдем и установлю любой из Tensorflow или Theano или CNTK модули.

Теперь мы готовы установить керас. Мы можем либо использовать монтаж PIP или клонировать репозиторий из Git. Чтобы установить использование PIP, откройте терминал и запустите следующую команду:

pip install keras

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

git clone https://github.com/keras-team/keras.git

После клонирования переходите в клонированный каталог и запустите:

sudo python setup.py install

Используя керас

Чтобы использовать KERAS в любом из ваших сценариев Python, нам просто нужно импортировать его, используя:

import keras

Плотно подключенная сеть

Последовательная модель, вероятно, является лучшим выбором для создания такой сети, но мы просто начинаем, так что это лучший выбор, чтобы начать с чего-то действительно простого:

from keras.layers import Input, Dense
from keras.models import Model
# This returns a tensor
inputs = Input(shape=(784,))
 
# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)
# This creates a model that includes
# the Input layer and three Dense layers
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

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

Последовательная модель

Модель является основной структурой данных KERAS. Самый простой тип модели представляет собой линейную стопку слоев, мы называем его последовательной моделью. Давайте поставим наши руки в код и попробуйте построить один:

# import required modules
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
# Create a model
model= Sequential()
# Stack Layers
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
# Configure learning
model.compile(loss='categorical_crossentropy', optimizer='sgd',metrics=['accuracy'])
# Create Numpy arrays with random values, use your training or test data here
x_train = np.random.random((64,100))
y_train = np.random.random((64,10))
x_test = np.random.random((64,100))
y_test = np.random.random((64,10))
# Train using numpy arrays
model.fit(x_train, y_train, epochs=5, batch_size=32)
# evaluate on existing data
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
# Generate predictions on new data
classes = model.predict(x_test, batch_size=128)

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

Давайте попробуем еще несколько моделей и как создавать их, как остаточное соединение на слое свертки:

from keras.layers import Conv2D, Input

# input tensor for a 3-channel 256x256 image
x = Input(shape=(256, 256, 3))
# 3x3 conv with 3 output channels (same as input channels)
y = Conv2D(3, (3, 3), padding='same')(x)
# this returns x + y.
z = keras.layers.add([x, y])

Общее видение модели

Модель Shared Vision помогает классифицировать, являются ли две цифры Mnist такими же цифрами или различными цифрами, повторно используя тот же модуль обработки изображений на двух входах. Давайте создадим один, как показано ниже.

from keras.layers import Conv2D, MaxPooling2D, Input, Dense, Flatten
from keras.models import Model
import keras
# First, define the vision modules
digit_input = Input(shape=(27, 27, 1))
x = Conv2D(64, (3, 3))(digit_input)
x = Conv2D(64, (3, 3))(x)
x = MaxPooling2D((2, 2))(x)
out = Flatten()(x)
vision_model = Model(digit_input, out)
# Then define the tell-digits-apart model
digit_a = Input(shape=(27, 27, 1))
digit_b = Input(shape=(27, 27, 1))
# The vision model will be shared, weights and all
out_a = vision_model(digit_a)
out_b = vision_model(digit_b)
concatenated = keras.layers.concatenate([out_a, out_b])
out = Dense(1, activation='sigmoid')(concatenated)
classification_model = Model([digit_a, digit_b], out)

Визуальный вопрос, отвечая на модель

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

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

from keras.layers import Conv2D, MaxPooling2D, Flatten
from keras.layers import Input, LSTM, Embedding, Dense
from keras.models import Model, Sequential
import keras
 
# First, let's define a vision model using a Sequential model.
# This model will encode an image into a vector.
vision_model = Sequential()
vision_model.add(Conv2D(64, (3, 3), activation='relu', padding='same', input_shape=(224, 224, 3)))
vision_model.add(Conv2D(64, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(128, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(128, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(256, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(256, (3, 3), activation='relu'))
vision_model.add(Conv2D(256, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Flatten())
 
# Now let's get a tensor with the output of our vision model:
image_input = Input(shape=(224, 224, 3))
encoded_image = vision_model(image_input)
 
# Next, let's define a language model to encode the question into a vector.
# Each question will be at most 100 word long,
# and we will index words as integers from 1 to 9999.
question_input = Input(shape=(100,), dtype='int32')
embedded_question = Embedding(input_dim=10000, output_dim=256, input_length=100)(question_input)
encoded_question = LSTM(256)(embedded_question)
 
# Let's concatenate the question vector and the image vector:
merged = keras.layers.concatenate([encoded_question, encoded_image])
 
# And let's train a logistic regression over 1000 words on top:
output = Dense(1000, activation='softmax')(merged)
 
# This is our final model:
vqa_model = Model(inputs=[image_input, question_input], outputs=output)
 
# The next stage would be training this model on actual data.

Если вы хотите узнать больше о визуальном вопросе, отвечающем (VQA), ознакомьтесь с этим Руководство для начинающих к VQA Отказ

Обучение нейронной сети

Теперь, когда мы видели, как построить разные модели, используя KERAS, давайте поставить вещи вместе и работать в полном примере. В следующем примере поезда нейронная сеть на множестве данных Mnist:

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop
 
batch_size = 128
num_classes = 10
epochs = 20
 
# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
 
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
 
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
 
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(num_classes, activation='softmax'))
 
model.summary()
# Compile model
model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])
 
history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
# Print the results
print('Test loss:', score[0])
print('Test accuracy:', score[1])

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

Заключение

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

KERAS популярен с другими рамками, и это одна из самых популярных рамх на Kaggle Отказ