На этой странице мы представляем ответы на некоторые из наиболее распространенных вопросов, которые мы получаем о CNTK и связанных темах.
Что такое CNTK?
CNTK, Microsoft Cognitive Toolkit, является платформой для глубокого обучения. Вычислительная сеть определяет функцию для обучения в виде направленного графа, где каждый конечный узел состоит из входного значения или параметра, а каждый неконечный узел представляет матрицу или операцию тензора на дочерних элементах. Красота CNTK заключается в том, что после описания вычислительной сети все вычисления, необходимые для изучения сетевых параметров, выполняются автоматически. Нет необходимости создавать градиенты аналитически или кодировать взаимодействия между переменными для обратного распространения.
Почему корпорация Майкрософт разработала CNTK?
Сначала мы создали CNTK для себя. CNTK был разработан для быстрого обучения по самым большим наборам данных. Многие критически важные службы Майкрософт работают на моделях, обученных с помощью CNTK. Результаты были настолько положительными, мы хотели поделиться нашим набором средств с миром.
Как отправить отзыв?
Дайте нам отзыв через эти каналы.
Обучение моделей глубокого обучения может быть трудоемким, может ли CNTK помочь с этим?
Для критически важных исследований ИИ мы считаем, что эффективность и производительность являются важными критериями. CNTK был разработан для пиковой производительности не только для процессоров, но и для сценариев с одним GPU, несколькими GPU и несколькими компьютерами с GPU. Кроме того, 1-разрядный метод сжатия (Майкрософт) или метод блокировки импульса значительно сокращает затраты на связь, что позволяет выполнять высокомасштабируемое параллельное обучение на большом количестве GPU, охватывающих несколько компьютеров.
Является ли CNTK достаточно гибким для моей собственной сети?
В дополнение к широкому спектру встроенных вычислительных узлов CNTK предоставляет архитектуру подключаемого модуля, позволяющую пользователям определять собственные вычислительные узлы. Поэтому если для рабочей нагрузки требуется специальная настройка, CNTK упрощает выполнение этой задачи. Читатели также полностью настраиваются, что позволяет поддерживать произвольные форматы ввода.
Каковы ключевые алгоритмы обучения, поддерживаемые CNTK?
Сегодня CNTK поддерживает следующие алгоритмы:
- Переадресация веб-канала
- CNN
- Рекуррентная нейронная сеть
- LSTM
- Последовательность — последовательность.
Кто люди за CNTK?
CNTK разрабатывается отделом технологий и исследований Корпорации Майкрософт. Кроме того, CNTK получает значительные вклады практически всех производственных команд Майкрософт.
Когда началось работа над CNTK?
Разработка CNTK ведется с конца 2014 года.
Оптимизирована ли CNTK только для обучения распознаванию речи?
Нет. CNTK используется в рабочей среде для распознавания речи, а также для обучения изображения и текста.
Как использовать CNTK?
Использование CNTK просто и просто. Вот несколько способов начать работу.
Почему CNTK рандомизирует мини-пакеты после каждой эпохи?
При этом одни и те же образцы всегда отображаются в мини-пакете вместе. Это приводит к улучшению точности проверки.
Можно ли использовать встроенные средства чтения для обучения сетевой модели с помощью нескольких входных файлов?
Да. Ознакомьтесь с описанием в разделе " Общие сведения и расширение средств чтения" и найдите раздел, описывающий, как создать несколько десериализаторов данных.
Как последовательности обрабатываются в CNTK?
См. эту статью , как работать с последовательностями.
При просмотре раскрывающегося списка выбрана скрытая единица, опущенная для всего мини-пакета, так как обновления происходят только после minibatchSize?
Обычно для разных выборок в одном мини-пакете для разных выборок задано значение 0. Для повторяющихся нейронных сетей некоторые люди ограничивают удаление одного набора скрытых единиц во времени для одной последовательности.
Документация по удалению упоминает о скрытых единицах, применяется ли удаление к единицам в сверточных слоях, если их несколько?
Слой свертки также является скрытым слоем, если он не является последним выходным слоем.
Можно ли указать разные коэффициенты перетаскивания для разных слоев?
В CNTK необходимо явно указать использование раскрывающегося списка. Например, если у исходной модели есть h2=W1*h1 и вы хотите применить раскрывающийся список, h1 его необходимо изменить на h2=W1*Dropout(h1). В настоящее время в BrainScript CNTK можно указать только одну частоту выпадений для всех узлов раскрывающегося списка, используемых в одной модели. Однако он позволяет выбрать разные коэффициенты отсева между эпохами. В API Python можно указать разные коэффициенты выпадания для каждого слоя.
BTW, мы не большие поклонники использования различных значений для различных раскрывающихся значений или исходных значений модели. Это приведет к значительному увеличению числа определяемых гиперпараметров. Если это используется в продукте, это означает, что модель не имеет инженерной стабильности.
Можно ли применять ограничения веса вместо термина регуляризации L2?
Да, вы можете вычислить все данные на основе веса и добавить его в основной критерий и использовать комбинированный критерий в качестве цели обучения.
Может ли API Python считывать модели обученного стиля BrainScript?
Да, вы можете читать модели, обученные BrainScript.