+ All Categories
Home > Documents > keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы...

keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы...

Date post: 30-Jan-2020
Category:
Upload: others
View: 22 times
Download: 0 times
Share this document with a friend
20
keras #keras
Transcript
Page 1: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

keras

#keras

Page 2: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

1

1: 2

2

Examples 2

2

3

3

TensorFlow Theano 4

Keras: 30 Second 4

2: - CNN, RNN MLP 6

6

6

Examples 6

VGG-16 CNN LSTM 6

3: Keras 8

8

Examples 8

Keras VGG 8

8

, VGG 9

9

4: Keras 11

11

11

Examples 11

11

5: Keras fit_generato 13

13

13

Examples 13

Page 3: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

13

6: 16

16

Examples 16

16

17

Page 4: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

ОколоYou can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: keras

It is an unofficial and free keras ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official keras.

The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]

https://riptutorial.com/ru/home 1

Page 5: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 1: Начало работы с керасом

замечания

Руководящий принцип s

модульность•

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

Минимализм•

Каждый модуль должен быть коротким и простым. Каждый фрагмент кода должен быть прозрачным при первом чтении. Нет черной магии: она болит итерационной скоростью и способностью к инновациям.

Простая растяжимость•

Новые модули мертвы просто добавлять (как новые классы и функции), а существующие модули предоставляют множество примеров. Чтобы иметь возможность легко создавать новые модули, вы можете полностью выразить свою выразительность, что делает Keras

подходящим для передовых исследований.

Работа с Python•

Нет отдельных файлов конфигурации моделей в декларативном формате. Модели описаны в коде Python, который компактен, легче отлаживается и обеспечивает простоту расширяемости.

Examples

Установка и настройка

Keras - библиотека высокоуровневых нейронных сетей, написанная на Python и способная работать поверх TensorFlow или Theano. Он был разработан с упором на возможность быстрого экспериментирования. Способность идти от идеи к результату с наименьшей возможной задержкой является ключом к проведению хороших исследований. Используйте Keras, если вам нужна библиотека глубокого обучения, которая:

Позволяет легко и быстро создавать прототипы (через общую модульность, •

https://riptutorial.com/ru/home 2

Page 6: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

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

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

Легко работает на процессоре и графическом процессоре.•

МонтажKeras использует следующие зависимости:

numpy, scipy•PyYAML•HDF5 и h5py (опционально, требуется, если вы используете функции сохранения / загрузки модели)

Необязательно, но рекомендуется, если вы используете CNN: cuDNN•

scikit-image (необязательно, требуется, если вы используете встроенные функции keras для предварительной обработки и увеличения данных изображения)

Keras - это библиотека высокого уровня, которая предоставляет удобный API машинного обучения поверх других низкоуровневых библиотек для обработки тензоров и манипуляций, называемых Backends . В это время Keras можно использовать сверху любого из трех доступных бэкэндов: TensorFlow , Theano и CNTK .

Theano устанавливается автоматически, если вы устанавливаете Keras используя pip .

Если вы хотите установить Theano вручную, обратитесь к инструкциям по установке Theano .

TensorFlow - рекомендуемый вариант, и по умолчанию Keras использует бэкэнд TensorFlow

, если он доступен. Чтобы установить TensorFlow , самый простой способ - сделать

$ pip install tensorflow

Если вы хотите установить его вручную, см. Инструкции по установке TensorFlow .

Чтобы установить Keras , cd в папку Keras и запустить команду установки:

$ python setup.py install

Вы также можете установить Keras из PyPI:

$ pip install keras

https://riptutorial.com/ru/home 3

Page 7: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

конфигурацияЕсли вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по адресу:

~/.keras/keras.json

Если его там нет, вы можете его создать. Файл конфигурации по умолчанию выглядит следующим образом:

{ "image_dim_ordering": "tf", "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" }

Переход от TensorFlow к Theano

По умолчанию Keras будет использовать TensorFlow как свою библиотеку манипуляций с тензорами. Если вы хотите использовать другие бэкэнд, просто измените бэкэнд поля на "theano" или "tensorflow" , и Keras будет использовать новую конфигурацию при следующем запуске любого кода Keras.

Начало работы с Keras: 30 Second

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

Вот последовательная модель:

from keras.models import Sequential model = Sequential()

Складывание слоев так же просто, как и .add() :

from keras.layers import Dense, Activation model.add(Dense(output_dim=64, input_dim=100)) model.add(Activation("relu")) model.add(Dense(output_dim=10)) model.add(Activation("softmax"))

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

https://riptutorial.com/ru/home 4

Page 8: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

.compile() :

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

Если вам нужно, вы можете настроить свой оптимизатор. Основной принцип Keras

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

from keras.optimizers import SGD model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))

Теперь вы можете перебирать свои данные обучения партиями:

model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)

Кроме того, вы можете вручную загружать партии в свою модель:

model.train_on_batch(X_batch, Y_batch)

Оцените свою производительность в одной строке:

loss_and_metrics = model.evaluate(X_test, Y_test, batch_size=32)

Или генерировать прогнозы по новым данным:

classes = model.predict_classes(X_test, batch_size=32) proba = model.predict_proba(X_test, batch_size=32)

Создание системы ответов на вопросы, модель классификации изображений, нейронная машина Тьюринга, встраивание word2vec или любая другая модель так же быстро. Идеи, лежащие в основе глубокого обучения, просты, так почему их выполнение должно быть болезненным?

Вы найдете более продвинутые модели: ответы на вопросы с сетями памяти, генерацию текста со сложными LSTM и т. Д. В папке примера .

Прочитайте Начало работы с керасом онлайн: https://riptutorial.com/ru/keras/topic/8695/

начало-работы-с-керасом

https://riptutorial.com/ru/home 5

Page 9: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 2: Классификация пространственно-временных вкладов с помощью CNN, RNN и MLP

Вступление

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

Сверточные нейронные сети (CNN) особенно подходят для поиска пространственных моделей. С другой стороны, повторяющиеся нейронные сети (RNN) особенно подходят для поиска временных шаблонов. Эти два, в сочетании с многослойными перцептронами, могут быть эффективными для классификации пространственно-временных входов.

замечания

В этом примере была использована модель VGG-16, предварительно подготовленная в базе данных ImageNet. Если требуется обучаемая модель VGG-16, установите для параметра VGG-16 weights значение None для случайной инициализации и установите для атрибута cnn.trainable значение True .

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

Examples

VGG-16 CNN и LSTM для классификации видео

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

from keras.applications.vgg16 import VGG16 from keras.models import Model from keras.layers import Dense, Input from keras.layers.pooling import GlobalAveragePooling2D from keras.layers.recurrent import LSTM from keras.layers.wrappers import TimeDistributed from keras.optimizers import Nadam video = Input(shape=(frames, channels,

https://riptutorial.com/ru/home 6

Page 10: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

rows, columns)) cnn_base = VGG16(input_shape=(channels, rows, columns), weights="imagenet", include_top=False) cnn_out = GlobalAveragePooling2D()(cnn_base.output) cnn = Model(input=cnn_base.input, output=cnn_out) cnn.trainable = False encoded_frames = TimeDistributed(cnn)(video) encoded_sequence = LSTM(256)(encoded_frames) hidden_layer = Dense(output_dim=1024, activation="relu")(encoded_sequence) outputs = Dense(output_dim=classes, activation="softmax")(hidden_layer) model = Model([video], outputs) optimizer = Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004) model.compile(loss="categorical_crossentropy", optimizer=optimizer, metrics=["categorical_accuracy"])

Прочитайте Классификация пространственно-временных вкладов с помощью CNN, RNN и MLP онлайн: https://riptutorial.com/ru/keras/topic/9658/классификация-пространственно-временных-вкладов-с-помощью-cnn--rnn-и-mlp

https://riptutorial.com/ru/home 7

Page 11: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 3: Передача обучения и точная настройка с использованием Keras

Вступление

В эту тему включены короткие, краткие, но исчерпывающие примеры загрузки предварительно подготовленных весов, вставки новых слоев сверху или в середине предварительно подготовленных и обучения новой сети с частично подготовленными весами. Пример для каждого вышедших из коробки предварительно подготовленных сетей, имеющегося в библиотеке Keras (VGG, RESNET, Inception, Xception, MobileNet), не требуется.

Examples

Передача обучения с использованием Keras и VGG

В этом примере представлены три кратких и всеобъемлющих под-примера:

Загрузка весов из доступных предварительно подготовленных моделей, включенных в библиотеку Keras

Укладка другой сети для обучения поверх любых слоев VGG•

Вставка слоя в середине других слоев•Советы и общее правило для тонкой настройки и передачи обучения с помощью VGG•

Загрузка предварительно подготовленных весовПредварительно подготовленные модели ImageNet , включая VGG-16 и VGG-19 , доступны в Keras . Здесь и далее в этом примере будет использоваться VGG-16 . Для получения дополнительной информации, пожалуйста, посетите Keras Applications .

from keras import applications # This will load the whole VGG16 network, including the top Dense layers. # Note: by specifying the shape of top layers, input tensor shape is forced # to be (224, 224, 3), therefore you can use it only on 224x224 images. vgg_model = applications.VGG16(weights='imagenet', include_top=True) # If you are only interested in convolution filters. Note that by not # specifying the shape of top layers, the input tensor shape is (None, None, 3),

https://riptutorial.com/ru/home 8

Page 12: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

# so you can use them for any size of images. vgg_model = applications.VGG16(weights='imagenet', include_top=False) # If you want to specify input tensor from keras.layers import Input input_tensor = Input(shape=(160, 160, 3)) vgg_model = applications.VGG16(weights='imagenet', include_top=False, input_tensor=input_tensor) # To see the models' architecture and layer names, run the following vgg_model.summary()

Создайте новую сеть с нижними слоями, взятыми из VGG

Предположим, что для определенной задачи для изображений с размером (160, 160, 3) вы хотите использовать предварительно подготовленные нижние слои VGG, вплоть до слоя с именем block2_pool .

vgg_model = applications.VGG16(weights='imagenet', include_top=False, input_shape=(160, 160, 3)) # Creating dictionary that maps layer names to the layers layer_dict = dict([(layer.name, layer) for layer in vgg_model.layers]) # Getting output tensor of the last VGG layer that we want to include x = layer_dict['block2_pool'].output # Stacking a new simple convolutional network on top of it x = Conv2D(filters=64, kernel_size=(3, 3), activation='relu')(x) x = MaxPooling2D(pool_size=(2, 2))(x) x = Flatten()(x) x = Dense(256, activation='relu')(x) x = Dropout(0.5)(x) x = Dense(10, activation='softmax')(x) # Creating new model. Please note that this is NOT a Sequential() model. from keras.models import Model custom_model = Model(input=vgg_model.input, output=x) # Make sure that the pre-trained bottom layers are not trainable for layer in custom_model.layers[:7]: layer.trainable = False # Do not forget to compile it custom_model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

https://riptutorial.com/ru/home 9

Page 13: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

Удалите несколько слоев и вставьте новый в серединеПредположим, что вам нужно ускорить VGG16, заменив block1_conv1 и block2_conv2 на один сверточный слой, чтобы сохранить заранее подготовленные веса. Идея состоит в том, чтобы разобрать всю сеть для разделения слоев, а затем собрать ее обратно. Вот код, специально предназначенный для вашей задачи:

vgg_model = applications.VGG16(include_top=True, weights='imagenet') # Disassemble layers layers = [l for l in vgg_model.layers] # Defining new convolutional layer. # Important: the number of filters should be the same! # Note: the receiptive field of two 3x3 convolutions is 5x5. new_conv = Conv2D(filters=64, kernel_size=(5, 5), name='new_conv', padding='same')(layers[0].output) # Now stack everything back # Note: If you are going to fine tune the model, do not forget to # mark other layers as un-trainable x = new_conv for i in range(3, len(layers)): layers[i].trainable = False x = layers[i](x) # Final touch result_model = Model(input=layer[0].input, output=x)

Прочитайте Передача обучения и точная настройка с использованием Keras онлайн: https://riptutorial.com/ru/keras/topic/10887/передача-обучения-и-точная-настройка-с-использованием-keras

https://riptutorial.com/ru/home 10

Page 14: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 4: Пользовательская функция потерь и метрики в Keras

Вступление

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

Обратите внимание, что потеря / метрика (для отображения и оптимизации) вычисляется как среднее значение потерь / показателей по всем точкам данных в партии.

замечания

Функции потери Keras определены в loss.py

Дополнительные функции потерь для Keras можно найти в хранилище keras-contrib .

Examples

Евклидовы потери расстояния

Определите функцию пользовательской потери:

import keras.backend as K def euclidean_distance_loss(y_true, y_pred): """ Euclidean distance loss https://en.wikipedia.org/wiki/Euclidean_distance :param y_true: TensorFlow/Theano tensor :param y_pred: TensorFlow/Theano tensor of the same shape as y_true :return: float """ return K.sqrt(K.sum(K.square(y_pred - y_true), axis=-1))

Используй это:

model.compile(loss=euclidean_distance_loss, optimizer='rmsprop')

Прочитайте Пользовательская функция потерь и метрики в Keras онлайн: https://riptutorial.com/ru/keras/topic/10674/пользовательская-функция-потерь-и-метрики-в-

https://riptutorial.com/ru/home 11

Page 16: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 5: Работа с большими наборами учебных материалов с использованием Keras fit_generator, генераторов Python и формата файла HDF5

Вступление

Проблемы машинного обучения часто требуют обработки большого количества учебных данных с ограниченными вычислительными ресурсами, в частности, с памятью. Не всегда возможно загрузить весь учебный набор в память. К счастью, это можно решить с помощью метода Kesh's fit_generator, генераторов Python и формата файла HDF5.

замечания

В этом примере предполагается keras, numpy (как np), а h5py уже установлены и импортированы. Он также предполагает, что видеовходы и метки уже обработаны и сохранены в указанном файле HDF5 в указанном формате, и модель классификации видео уже построена для работы с данным вводом.

Examples

Обучение модели классификации видео

В этом примере пусть модель будет моделью Keras для классификации видеовходов, пусть X - большой набор данных видеовходов с формой (выборки, кадры, каналы, строки, столбцы) и пусть Y - соответствующий набор данных однострочных кодированных меток с формой (образцы, классы) . Оба набора данных хранятся в файле HDF5 с именем video_data.h5 . Файл HDF5 также имеет атрибут sample_count для количества выборок.

Вот функция для обучения модели с помощью fit_generator

def train_model(model, video_data_fn="video_data.h5", validation_ratio=0.3, batch_size=32): """ Train the video classification model """ with h5py.File(video_data_fn, "r") as video_data: sample_count = int(video_data.attrs["sample_count"]) sample_idxs = range(0, sample_count) sample_idxs = np.random.permutation(sample_idxs) training_sample_idxs = sample_idxs[0:int((1-validation_ratio)*sample_count)] validation_sample_idxs = sample_idxs[int((1-validation_ratio)*sample_count):] training_sequence_generator = generate_training_sequences(batch_size=batch_size,

https://riptutorial.com/ru/home 13

Page 17: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

video_data=video_data, training_sample_idxs=training_sample_idxs) validation_sequence_generator = generate_validation_sequences(batch_size=batch_size, video_data=video_data, validation_sample_idxs=validation_sample_idxs) model.fit_generator(generator=training_sequence_generator, validation_data=validation_sequence_generator, samples_per_epoch=len(training_sample_idxs), nb_val_samples=len(validation_sample_idxs), nb_epoch=100, max_q_size=1, verbose=2, class_weight=None, nb_worker=1)

Вот генераторы последовательности обучения и валидации

def generate_training_sequences(batch_size, video_data, training_sample_idxs): """ Generates training sequences on demand """ while True: # generate sequences for training training_sample_count = len(training_sample_idxs) batches = int(training_sample_count/batch_size) remainder_samples = training_sample_count%batch_size if remainder_samples: batches = batches + 1 # generate batches of samples for idx in xrange(0, batches): if idx == batches - 1: batch_idxs = training_sample_idxs[idx*batch_size:] else: batch_idxs = training_sample_idxs[idx*batch_size:idx*batch_size+batch_size] batch_idxs = sorted(batch_idxs) X = video_data["X"][batch_idxs] Y = video_data["Y"][batch_idxs] yield (np.array(X), np.array(Y)) def generate_validation_sequences(batch_size, video_data, validation_sample_idxs): """ Generates validation sequences on demand """ while True: # generate sequences for validation validation_sample_count = len(validation_sample_idxs) batches = int(validation_sample_count/batch_size) remainder_samples = validation_sample_count%batch_size if remainder_samples: batches = batches + 1 # generate batches of samples for idx in xrange(0, batches): if idx == batches - 1: batch_idxs = validation_sample_idxs[idx*batch_size:] else: batch_idxs = validation_sample_idxs[idx*batch_size:idx*batch_size+batch_size] batch_idxs = sorted(batch_idxs)

https://riptutorial.com/ru/home 14

Page 18: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

X = video_data["X"][batch_idxs] Y = video_data["Y"][batch_idxs] yield (np.array(X), np.array(Y))

Прочитайте Работа с большими наборами учебных материалов с использованием Keras

fit_generator, генераторов Python и формата файла HDF5 онлайн: https://riptutorial.com/ru/keras/topic/9656/работа-с-большими-наборами-учебных-материалов-с-использованием-keras-fit-generator--генераторов-python-и-формата-файла-hdf5

https://riptutorial.com/ru/home 15

Page 19: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

глава 6: Создайте простую последовательную модель

Вступление

Sequential модель представляет собой линейную совокупность слоев.

Examples

Простой многослойный перцептрон с последовательными моделями

Вы можете создать модель Sequential, передав список экземпляров слоя в конструктор:

from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Dense(32, input_dim=784), Activation('relu'), Dense(10), Activation('softmax'), ])

Вы также можете просто добавить слои с помощью .add() :

model = Sequential() model.add(Dense(32, input_dim=784)) model.add(Activation('relu'))

Модели должны быть скомпилированы перед использованием:

model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

Прочитайте Создайте простую последовательную модель онлайн: https://riptutorial.com/ru/keras/topic/8850/создайте-простую-последовательную-модель

https://riptutorial.com/ru/home 16

Page 20: keras - RIP Tutorialконфигурация Если вы запустили Keras хотя бы один раз, вы найдете файл конфигурации Keras по

кредиты

S. No

Главы Contributors

1Начало работы с керасом

Arman, Community, FalconUA

2

Классификация пространственно-временных вкладов с помощью CNN,

RNN и MLP

Robert Valencia

3

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

FalconUA

4Пользовательская функция потерь и метрики в Keras

FalconUA, Sergii Gryshkevych

5

Работа с большими наборами учебных материалов с использованием Keras fit_generator,

генераторов Python

и формата файла HDF5

Robert Valencia

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

Arman, Sam Zeng

https://riptutorial.com/ru/home 17


Recommended