Диагностика
Эта страница собирает некоторые из наиболее частых ошибок, с которыми сталкиваются пользователи.
Во время обучения двоичного классификатора я всегда вижу классификатор ClassificationError 0 даже из первого мини-бата
ClassificationError работает правильно только для многоклассовых проблем. Для двоичной классификации используйте этот простой рецепт
Хотя модель была обучена с большим набором, чем набор вычислений, CNTK заканчивается памятью во время оценки.
Обучение модели обычно имеет minibatchSize
набор свойств в файле конфигурации CNTK. При оценке модели с помощью CNTK.exe убедитесь, что она minibatchSize
подходит. Чтобы быстро определить, вызывает ли это свойство проблему, задайте для свойства низкое значение (например minibatchSize=2
, ) в файле конфигурации для команды оценки. (cf. Issue #468)
Я получаю SegFault в Linux с глубокими сетями (например, ResNet152).
Возможно, у вас недостаточно размера стека. Для BrainScript требуется много стека. Выполните команду: ulimit -s 65536. При этом размер стека будет равным 64 МБ.
Во время eval возникает следующая ошибка: о том, как создать исключение cuDNN failure 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0; hostname=haha; expr=err'
Задайте для свойства minibatchSize меньшее значение (например minibatchSize=2
, ).
При компиляции CNTK с помощью VS2013/VS2015 возникает ошибка компилятора, что не так?
Необходимо обновить Visual Studio 2017 г. См. здесь: настройка CNTK на Windows
Я включил средство чтения изображений с поддержкой ZIP и получает сообщение "Подключаемый модуль не найден: "Cntk.Deserializers.Image-.dll" (старое имя "ImageReader.dll")" при выполнении модульных тестов средства чтения изображений или попытке использовать средство чтения изображений. Что может быть неправильно?
Убедитесь, что вы правильно установили zlib и libzip.
Я только что скачал и установил CNTK двоичный пакет и хочет запустить задание, но получить странные ошибки, например отсутствующие библиотеки CUDA.
Пожалуйста, внимательно проверьте, что у вас есть в вашем PATH
. Особенно, если это общий компьютер разработки. Часто это вызвано более старыми (предыдущими) версиями CNTK или CNTK компонентов, доступных с помощью настроенного ПУТИ.
На Windows я установил новую версию драйвера NVIDIA, и теперь CNTK сборка завершается сбоем с такими ошибками, как ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory
Вы выбрали параметр "Выполнить чистую установку " в установщике драйверов NVIDIA. Это приведет к удалению пакета развертывания GPU (GDK). Чтобы восстановить систему, выполните следующие действия.
- Запуск установщика CUDA
- Выбор настраиваемой установки (дополнительно)
- Отмените выбор всех параметров установки, кроме комплекта развертывания GPU
- При этом автоматически выбирается параметр "Драйвер графики " — ожидается. Оставьте его выбранным
- Продолжить установку CUDA
- После успешной установки CUDA запустите установку требуемой версии графического драйвера
- Выбор настраиваемой установки (дополнительно)
- Убедитесь, что невыбрана чистая установка и продолжить установку
Начальное время чтения занимает очень много времени , или я получаю одно из следующих исключений: "Сбой вызова ОС или операция не поддерживается в этой ОС" или "ИСКЛЮЧЕНИЕ произошло: сбой CUSPARSE 1" или Segfault с AllocationFailureHandler в стеке.
Одна из возможных причин заключается в чрезмерном нехватке памяти, вызванной загрузкой всего набора данных в памяти с окном случайной выборки по умолчанию (т. е. без ограничений). Попробуйте запустить рабочую нагрузку с явным randomizationWindow
значением, которое ограничивает объем входных данных, кэшированных в памяти. Для этого добавьте следующие параметры reader
в раздел конфигурации (например 10000
, можно выбрать любое значение, которое соответствует памяти и обеспечивает хорошую случайность):
randomize=true
randomizationWindow=10000 #(assuming that 10K samples << total available memory)
При использовании библиотеки Eval C# Cntk.Eval.Wrapper.dll (старое имя EvalWrapper.dll) в веб-приложении Azure возникают такие ошибки: "Не удалось загрузить файл или сборку "некоторые библиотеки DLL CNTK", или исключение System.Runtime.InteropServices.SEHException или "InternalServiceFault: Внешний компонент создал исключение.".
Сначала убедитесь, что все библиотеки DLL зависимостей CNTK развертываются в веб-приложении Azure.
Затем необходимо настроить веб-приложение Azure для использования 64-разрядной виртуальной машины. Чтобы разрешить веб-приложению Azure загружать CNTK неуправляемые библиотеки DLL, необходимо изменить переменную PATH, добавив в метод global.asax
следующий код:Application_Start()
string pathValue = Environment.GetEnvironmentVariable("PATH");
string domainBaseDir = AppDomain.CurrentDomain.BaseDirectory;
string cntkPath = domainBaseDir + @"bin\";
pathValue += ";" + cntkPath;
Environment.SetEnvironmentVariable("PATH", pathValue);
Подробные инструкции см. на странице "Оценка модели на веб-странице Azure WebApi".
Я могу создать приложение с помощью Cntk.Eval-.lib/dll, но при запуске возникло исключение, аналогичное приведенным ниже.
Необработанное исключение типа Microsoft.MSR. CNTK. Расширяемость.Managed.CNTKRuntimeException произошла в Cntk.Wrapper-.dll
Дополнительные сведения: configparameters: обязательный параметр отсутствует: unknown:modelPath
Возможны следующие причины:
- Другая конфигурация сборки (выпуск или отладка) между приложением
Cntk.Eval-<VERSION>.lib/dll
и . Если вы создаете приложение в выпуске, обратитесь по ссылке на версиюCntk.Eval-<VERSION>.dll
выпуска . То же самое для конфигурации отладки. Эта ошибка обычно возникает для приложения C++. - Разные версии компилятора GCC в Linux:
Cntk.Eval
библиотека в Linux создается с помощью GCC 5.4. Если для приложения используется другая версия GCC, может появиться указанная выше ошибка. - МодельPath неправильная. В настоящее время модельPath должна быть указана как полный путь. В примере CSEvalClient относительный путь объединяется с текущим рабочим каталогом для создания полного пути. И CreateNetwork() должен передавать строку, содержащую атрибут modelPath=, указывающий путь к файлу модели. В настоящее время сопоставленный диск не поддерживается для моделиpath.
Я получаю следующий результат с CNTKTextFormat-Reader - ПРЕДУПРЕЖДЕНИЕ: исчерпаны все входные данные, ожидаемые для текущей последовательности при чтении значения с плавающей запятой при смещение
Для чтения CTF требуется, чтобы каждая хорошо сформированная строка заканчивалась символами \n или "Возврат каретки, канал строки" \r\n символов (включая последнюю строку файла).