Как стать автором
Обновить

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

Ребят, сделайте нормальную документацию к C++ API и люди к вам потянутся.
Отрасль уже готова выйти за рамки Питона и Луа.
Вы сравниваете CNTK с TensorFlow. Но все кто хоть немного поработал в отрасли уже знают о больячках TensorFlow. И это сравнение не выглядит убедительным.
Сейчас CNTK — просто ещё один фреймворк на Питоне и, внезапно, BrainScript.
Киллер-фич по сравнению с Torch, Caffe или тем же Teano не видно.
И опять, нет ясной и удобной документации C++, а это как раз то, чего не хватает остальным мейнстримовым фреймворкам.

Похоже, основная фича у CNTK это скорость на LSTM сетях, нашел пару бенчмарков arxiv.org/abs/1608.07249 и minimaxir.com/2017/06/keras-cntk на обучении до 3-5 раз быстрее чем TF.
Да, CNTK особенно заточен в плане производительности под работу с рекуррентными нейронными сетями, включая LTSM. Это, наверное, одна из важных фич.
На GitHub есть соответствующий issue на тему документации C++. Команда CNTK говорит, что она занимается ее улучшение. Будет хорошо, если вы поддержите это начинание комментарием, чтобы показать ее важность.

Также C# Binding для обучения сейчас находится в разработке. :)
Статья в духе «у нас есть всякое хорошее и нет ничего плохого», попахивает классическим маркетинговым булшитом. Не хватает более конкретных примеров, кусков кода и т.п. Сравните, например, с недавней статьей про Pytorch.
НЛО прилетело и опубликовало эту надпись здесь
Подправил фразу в разделе про производительность, чтобы не вводить в заблуждение.

Идея утверждения про точность состоит в том, что на базе CNTK удалось показать большую точность на той же архитектуре, чем при использовании TensorFlow. С учетом специфик алгоритмов и процедур обучения, «багов» разные фреймворки могут показывать разную максимальную точность одной и той же сети на одних и тех же данных. Это позволяет в некоторой мере говорить о таком понятии как «точность Фреймворка.»
НЛО прилетело и опубликовало эту надпись здесь
На самом деле почти все фреймворки реализуют одну и ту же функциональность и дублируют друг друга. При этом они создают здоровую конкуренцию, что хорошо. Из описанных преимуществ CNTK самым важным, на мой взгляд, является сквозное многоуровневое API на C++, которое позволяет описывать архитектуру сети на низком уровне, как в TF, или же на высокоуровневом функциональном API, как в Keras. Реализация обучения в виде C++ API, масштабирование на кластеры из GPU в разных конфигурациях, эффективная и удобная поддержка RNN — вот, наверное, основные преимущества. Тянут ли они на killer feature — вопрос скорее терминологический.

Кстати, поддержка Keras недавно тоже добавилась, поэтому если вы используете Keras — можно просто попробовать CNTK как другой бэкенд и посмотреть на разницу. Если у кого-то будет такой опыт — поделитесь с нами!
Лично меня пока бесит нетрадиционная pyton ориентация, вообще нет совместимости с C# на котором пишет большинство разработчиков… то есть большинство нейросетевых фрейворков просто не возможно использовать… это в полной мере касается CNTK. Убедите меня примером на C# если я не прав.
На самом деле нетрадиционная ориентация неслучайна — Python является стандартом де-факто для Data Science. Именно поэтому Microsoft добавил Python API. Изначально (и именно в таком режиме CNTK использовался внутри компании) идея была в том, чтобы тренировать сетки на BrainScript, а использовать — через API (в т.ч. C#/.NET). Пример использования на .NET есть тут: github.com/Microsoft/CNTK/tree/master/Examples/Evaluation

Однако что выгодно отличает CNTK от Tensorflow (и что обеспечивает прирост в скорости) — это тот факт, что API для обучения также реализовано на C++ (в отличие от Python в случае TF). Это позволяет достаточно просто перейти к обучению сетей также из языков типа C# — и сейчас такая работа ведется. Вот тут github.com/Microsoft/CNTK/issues/2194 например обещают предварительное API для обучения на C# к середине сентября. Другое дело, что обучать на C# будет не так комфортно, как на Python, поскольку нет таких мощных библиотек для работы с матрицами, как numpy.
вообще нужен не интерфейс в c#,
а общий интерфейс для подключения из сторонних программ что то типа подключаемой dll
Так оно и будет, по сути дела речь идёт о расширении .NET interop dll, чтобы она включала в себя функции обучения, а не только evaluation. Просто примеры логичнее всего делать на C# (или F#)
о я буду очень ждать :-)
Ура середина сентября настала!!!
Есть новости о расширении .NET interop dll, чтобы она включала в себя функции обучения, а не только evaluation?
>Вот тут github.com/Microsoft/CNTK/issues/2194 например обещают предварительное API для обучения на C# к середине сентября
было бы здорово… и скорее бы… так как фреймворки нейронных сетей и c# что то ни как не могут состыковаться

>обучать на C# будет не так комфортно, как на Python, поскольку нет таких мощных библиотек для работы с матрицами, как numpy
что мешает сделать так чтобы было комфортно и что мешает добавить необходимые библиотеки?
Выглядит как маркейтинг. Где графики, где бенчмарки, где точные цифры?
Сплошные «CNTK в целом работает быстрее, чем TensorFlow» и «Точность выше». Где пример как «всего несколько строк кода» распараллеливает обучение на 4 видюхи?
>CNTK в целом работает быстрее, чем TensorFlow
это не первая и не единственная статья о том что TensorFlow медленнее, но я думаю что скорость важна, но не совсем главное, главное: удобство, документированность и совместимость со всем и вся
Зарегистрируйтесь на Хабре, чтобы оставить комментарий