Я начал работать с Deep Learning (DL) в период с 2016 по 2017 год, когда экосистема фреймворка была намного более разнообразной и фрагментированной, чем сегодня. Theano был золотым стандартом в то время, Tensorflow только что был выпущен, а DeepLearning4j все еще создавался. И Theano, и Tensorflow были относительно низкоуровневыми фреймворками, и работать с ними было несколько болезненно, особенно для таких новичков, как я. Библиотеки Keras и Lasagne помогли несколько облегчить боль, предлагая API более высокого уровня - Lasagne обернул Theano, в то время как Keras предоставил общий интерфейс для Theano или Tensorflow.

[Статья по теме: Глубокое обучение в R с помощью Keras]

Моим первым проектом DL была Классификация изображений. К этому времени проблема ImageNet в значительной степени считалась решенной: представленные модели машинного обучения обычно имели точность, превышающую 95%. Для справки, задача ImageNet заключалась в том, чтобы различать около 1000 типов повседневных предметов. С другой стороны, моему классификатору требовалось различать 8 (позже 11) классов медицинских изображений.

Использование Transfer Learning для использования знаний в моделях ImageNet казалось естественным. В моем случае трансферное обучение потребовало бы взятия существующей высокопроизводительной модели ImageNet и ее точной настройки с учетом моих помеченных данных, чтобы она соответствовала задаче классификации медицинских изображений.

Первая итерация моей модели оказалась гибридом бэкэнда Caffe для генерации представлений векторных изображений с использованием обученных моделей ImageNet и сети Keras Dense для классификации этих векторов в один из 8 классов. Caffe - это фреймворк C ++, специализирующийся на задачах с изображениями, и основная причина, по которой я выбрал его, заключалась в том, что он предоставлял загружаемые обученные модели ImageNet. Позже, когда проект Keras предоставил свои собственные загружаемые модели ImageNet, я построил вторую итерацию модели, которая доработала модель ImageNet и научилась сквозной классификации медицинских изображений.

Я привел эту историю, чтобы показать, насколько легко и естественно было начать работать с Керасом. Долгое время это была единственная библиотека, в которой я нуждался для построения моих моделей. В течение этого периода я неизменно восхищался его интуитивно понятным API, разумными параметрами по умолчанию и общим качеством учебных материалов на его веб-сайте.

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

Сегодня экосистема глубокого обучения намного более зрелая, поэтому, к счастью, можно обойтись изучением меньшего количества фреймворков. Хотя за прошедшие годы было выпущено множество отличных фреймворков, которые используются в специализированных нишах, основными из них являются Keras, Tensorflow и Pytorch. Pytorch стал популярным из-за своей модели активного исполнения, которую Tensorflow не допускал, и которую Керас спрятал за своим умно разработанным API. С тех пор Keras был включен в Tensorflow как tf.keras, но оригинальный Keras также продолжает жить с дополнительным бэкэндом CNTK (от Microsoft). Со своей стороны, Tensorflow в его версии 2.x принял модель активного выполнения Pytorch и сделал tf.keras своим API по умолчанию.

Таким образом, произошло много сближения, и хотя я рекомендую изучить все три перечисленных выше фреймворка, если вам нужно быстро работать продуктивно и не навязывать вам фреймворк (проектом или корпоративной политикой), я бы Рекомендую начать с Кераса. Если вы хорошо разбираетесь в одном из других, вам все равно следует изучить Keras, потому что для большинства задач вы, вероятно, будете более продуктивными с Keras, чем с вашей текущей структурой.

Конечно, простота и элегантность Keras имеют свою цену. Большинство вещей в Керасе легко и интуитивно понятно, но некоторые вещи очень сложно или даже невозможно. Некоторые из этих задач возможны в других фреймворках более низкого уровня, но вы платите за это удобство более подробным кодом и более крутой кривой обучения. Однако с tf.keras (и в некоторой степени с оригинальными Keras, использующими бэкэнд Tensorflow) у вас есть доступ к полной подложке Tensorflow. Кроме того, команда Keras недавно была занята доработкой своего кода, что теперь позволяет делать в Keras определенные вещи, которые ранее считались невозможными.

Для меня большая честь представить Keras: от супа до орехов - учебное пособие на основе примеров на OSDC West в этом году, где я надеюсь коснуться некоторых из этих вещей, которые делают Keras таким простым, но мощным дополнением к вашему набору инструментов DL. Я надеюсь увидеть вас там!

Об авторе / спикере ODSC West: Суджит Пал - специалист по прикладным данным в Elsevier Labs, группе передовых технологий, входящей в группу компаний Reed-Elsevier. Сферы его интересов включают семантический поиск, обработку естественного языка, машинное обучение и глубокое обучение. В Elsevier он работал над несколькими инициативами по машинному обучению, включающими большие корпуса изображений и текста, а также над другими инициативами, касающимися систем рекомендаций и разработки графов знаний. Он является соавтором Deep Learning с Keras (https://www.packtpub.com/big-data-and-business-intelligence/deep-learning-keras) и Deep Learning с Tensorflow 2.x и Keras ( Https://www.packtpub.com/data/deep-learning-with-tensorflow-2-0-and-keras-second-edition) и пишет о технологиях в своем блоге Salmon Run ( https://sujitpal.blogspot.com/ ).