Почему Керас? Это популярная альтернатива Pytorch и Tensorflow. Tensorflow 2.0 выбрал Keras в качестве всеобъемлющего API высокого уровня для использования в Tensorflow, начиная с весны 2019 года. Keras — это дружественный API для глубокого обучения. Он прост в использовании для исследователей и разработчиков. Keras дает Tensorflow 2.0 нетерпеливый режим (нетерпеливое выполнение). Шаблон был ленивым режимом в Tensorflow 1.x.

Keras – это AP высокого уровня, используемая для создания, обучения и прогнозирования с помощью моделей глубокого обучения. Его можно использовать для создания прототипов, исследований и, возможно, производства.

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

Популярен Keras и за пределами США как в Европе, так и в Восточной Азии — Японии, Сингапуре.

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

Установка Tensorflow и Keras

Вы можете использовать менеджер пакетов Python pip или Anaconda, популярный менеджер пакетов для обработки данных, для управления и установки вашего Tensorflow. Как всегда рекомендую начать с Google Colab — глубокое обучение в браузере, без установки и настройки.

Используйте это, если хотите попробовать Keras с Tensorflow. Зачем устанавливать Tensorflow? Вы можете использовать весь пакет машинного обучения от Google, включая готовые наборы данных.

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
data = tf.keras.datasets.mnist
(training_images, training_labels), (val_images, val_labels) = data.load_data()

Первая строка импортирует библиотеку tensorflow. Если importerror, обязательно сначала установите tensorflow или используйте Google Colab.

Вторая строка специально импортирует Keras, а третья строка импортирует модуль слоев из Keras.

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

(train_X, train_y), (val_X, val_y) = data.load_data()

Говоря простым языком, мы загружаем данные и разбиваем данные на обучающий и проверочный наборы (вы также можете увидеть, что здесь используется тестовый набор). И для каждого набора мы дополнительно разбиваем на функции, метки или большой X для матрицы функций и маленький y для вектора меток.

Вы также можете увидеть, что scikitlearn train_test_split используется здесь вместо load_data().

Все модели Sequential находятся в tf.keras.models.Sequential. Мы решили продемонстрировать последовательные модели, потому что они написаны на языке python, просты и интуитивно понятны для быстрого понимания. Однако в реальной жизни разработчиков ООП-версия модели Keras, вероятно, лучше подходит для сложных задач и архитектуры машинного обучения.

Вы можете думать, что Sequential — это коробка, содержащая стопку слоев глубокого обучения.

Используйте префикс, указывающий правильные модули Keras для использования. Пример tf.keras.Sequential() иначе есть ImportError.

model = tf.keras.Sequential([
    # Adds a densely-connected layer with 64 units to the model:
    layers.Dense(64, activation='relu', input_shape=(32,)),
    # Add another:
    layers.Dense(64, activation='relu'), 
   
    # Add a softmax layer with 10 output units:
    layers.Dense(10, activation='softmax')])​
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])

Вот документация для плотного слоя, первыми аргументами являются единицы, активация и смещение.

tf.keras.layers.Dense(
    units,
    activation=None,
    use_bias=True,

Примечание input_shape важно для построения/инициализации модели, чтобы модель знала, что такое входное измерение и как построить модель вокруг него. Unit — это количество нейронов в скрытом слое, и это важно.

Поначалу количество единиц и размер ядра могут сбивать с толку, потому что вы можете подумать, что ядро ​​и фильтр предназначены для CNN. Эти два предложения важны

Dense реализует операцию: output = activation(dot(input, kernel) + bias) где activation — это поэлементная функция активации, переданная в качестве аргумента activation, kernel — матрица весов, созданная слоем, а bias — вектор смещения, созданный слоем (применимо, только если use_bias равно True).

Например, если вход имеет размеры (batch_size, d0, d1), мы создаем kernel формы (d1, units).

Другими словами, kernel — это весовая матрица в Keras Dense Layers. Конечная размерность вывода этого слоя может быть рассчитана с использованием правила умножения матриц двух матриц: вывода предыдущего слоя и ядра.

Предыдущий слой batch_size,d0,d1 , текущее ядро ​​d1, unit (автоматически выбирается на основе последнего измерения d1 вывода предыдущего слоя и количества единиц, указанных при инициации этого текущего плотного слоя — единиц. В соответствии с правилом умножения матриц два внутренних измерения должны совпадать, следовательно d1 равно d1, поэтому окончательный результат равен d0,единица.

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

Создайте последовательную модель Keras

# model = Sequential()
model.add(Dense(128, input_dim=6))
model.add(Activation(‘sigmoid’))
model.add(Dense(32))
model.add(Activation(‘sigmoid’))
model.add(Dense(2))
model.add(Activation(‘sigmoid’))
model.compile(loss = ‘categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
model.summary()

Другой способ использовать Sequential:

# Define Sequential model with 3 layers
model = keras.Sequential(
    [
        layers.Dense(2, activation="relu", name="layer1"),
        layers.Dense(3, activation="relu", name="layer2"),
        layers.Dense(4, name="layer3"),
    ]
)
# Call model on a test input
x = tf.ones((3, 3))
y = model(x)

Этот пример из документации Tensorflow Keras показывает, что модель Sequential инициализируется и сохраняется в переменной с именем model . Вы можете называть это как угодно. Последовательная модель — это список слоев глубокого обучения Keras.

Когда model() вызывается на входе x с использованием model(x) , вход x проходит через каждый из слоев в модели Sequential последовательно — по порядку. И каждый вывод слоя подается в следующий слой в качестве ввода. Когда все сделано, модель генерирует окончательный результат. Готов к оценке.

Приведенная выше демонстрация документации Tensorflow эквивалентна

# Create 3 layers
layer1 = layers.Dense(2, activation="relu", name="layer1")
layer2 = layers.Dense(3, activation="relu", name="layer2")
layer3 = layers.Dense(4, name="layer3")
# Call layers on a test input
x = tf.ones((3, 3))
y = layer3(layer2(layer1(x)))

Если мы сохраним каждый слой в переменной. Затем вход x сначала подается через слой 1 с использованием layer1(x) , затем результат передается на уровень 2 с использованием слоя 2 (выходной_слой_1), замените layer1(x) на заполнитель output_layer_1, вы получите layer2(layer1(x)) . У вас может быть столько слоев, сколько вы хотите, чтобы сделать модель более глубокой или сложной, но, безусловно, есть лучшие практики, которые помогут модели быть эффективной, хорошо обобщающей и в то же время гибкой.

Осмотрите и суммируйте модель

model.summary() может выводить информацию о слое, форме и параметрах.

Использование модели

model.fit(X_train, y_train, epochs=1000, batch_size=100, verbose=0)
score = model.evaluate(X_train, y_train)

Дополнительные ресурсы

Чтобы узнать больше о модели Keras Sequential, используйте документацию Tensorflow Keras здесь.