• Всегда проверяйте архитектуру, запуская ее в течение 1-2 эпох, прежде чем тренировать ее по-настоящему.
  • Используйте model.summery () в Tensorflow или print (model) в Pytorch, чтобы просмотреть архитектуру модели. Это особенно полезно в CNN.
  • Сначала попробуйте архитектуру модели на известном наборе данных
  • Попутное написание модульных тестов и тестовых функций минимизирует логические ошибки кода.
  • Эти модульные тесты можно использовать повторно. Это действительно важно
  • В Стэнфордском курсе CNN неоднократно говорилось о тестировании сетей с использованием известного распределения для инициализации весов и параметров. Это делает первоначальный результат предсказуемым. Таким образом, мы сможем обнаружить проблему с архитектурой на ранней стадии.

Поиск в Google и использование StackOverflow

Независимо от того, насколько хорош наш совет, вы, вероятно, сможете найти лучшие ответы, просто усердно погуглите и используя stackoverflow. Это действительно лучшие ресурсы для отладки.

Совет от профессионала: сосредоточьтесь на сообщении среднего высокого уровня, типе ошибки. Попробуйте погуглить только сообщение об ошибке полу-высокого уровня. Попробуйте удалить сообщения, относящиеся к проекту и данным.

Быть конкретными. Погуглите ключевое слово технологии, архитектуру, платформу вместе.

Распространенные ошибки в машинном обучении

Ошибка размера

Ошибка несоответствия размеров - обычное дело.

В конечном итоге машинное обучение и глубокое обучение используют много линейной алгебры - матрицы и матричные умножения. Возможны ошибки размеров. Большинство современных библиотек для ML и DL укажут на несоответствие формы. Используйте shape (num_1, num_2) (num_3, num_4), например, в то время как при умножении матриц важно сопоставить 2 и 3, чтобы matmul работал, также важно подумать о том, где находятся фактические измерения 2 и 3 от.

Например, в трансферном обучении: последний уровень vgg16 - это 25088. Важно выяснить, откуда взялось это число в архитектуре VGG16. Если счетчик in_feature для нового классификатора используется в трансферном обучении для замены старого, то возникнет ошибка.

Хотите, чтобы Tensorflow, Keras как сводка модели в Pytorch? Вы можете pip install torchsummary и использовать его для расчета размеров сводного модуля. Он выведет таблицу in_features и out_features для каждого слоя.

Имя переменной и инициация

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

Данные модели CUDA не перемещались вместе проблема

Вы будете предупреждены об этой проблеме в pytorch, если типы тензора не совпадают. Вы можете использовать тип (variableName) для отладки. Обычно он говорит, что ожидает тензор cuda, но получил нормальный тензор. Это когда модель и данные не перемещались в cuda вместе (GPU) или не возвращались обратно в cpu вместе. Для обучения модель и данные должны находиться в одном месте.

Прочие ошибки

Синтаксическая ошибка: используйте IDE, текстовый редактор, клавишу табуляции,? (), help (), чтобы получить подсказки и улучшить автоматическое завершение кода.

Отладчик

Некоторые разработчики предпочитают интерактивные отладчики. Знаете ли вы, что Jupyter Notebook позволяет использовать отладчик python в ячейках кода? Это очень полезно для Pytorch. Вы можете использовать отладчик python с Pytorch. Вы можете использовать Tensorflow для регистрации и визуализации обучения и отладки.

Интерактивная консоль IDE

Anaconda предоставляет IDE для разработки проектов в области науки о данных и машинного обучения. Также анаконда спайдер.

Некоторые исследователи данных, с которыми мы беседовали, упомянули Pycharm для Python.

Jupyter Lab заменяет Jupyter Notebook. Jupyter Lab позволяет открывать и работать с несколькими файлами в папке, а не только с одним блокнотом.

Виртуальная среда и среда анаконды

Мультиколлинеарность

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

Утечка данных

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

Настройка гиперпараметров

Ваша модель требует вечных тренировок? Возможно, ваша скорость обучения слишком мала, например 0,0001, это также может означать, что вы используете gridsearchcv, который ищет все попарные комбинации. Рандомизированные алгоритмы обычно быстрее и включают случайный поиск cv. Случайный запуск и случайная инициализация также быстрее. Если перекрестная проверка требует изменения ядра, это может занять некоторое время. Если настройка гиперпараметров требует изменения функций обновления расстояния для всех точек данных, это также может занять некоторое время.

Если ваш результат не улучшится? Попробуйте меньшую скорость обучения. Скорость обучения обычно не может быть большой, например 0,5. Может не найти максимумов.

Неоправданно высокая точность

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

В случае сомнений используйте меньшую скорость обучения, например 0,01, даже 0,001.

Ускорить обучение

Используйте GPU для обучения. Используйте партии. Избегайте циклов и применяйте очистку данных. Масштабируйте и нормализуйте объекты. Если возможно, используйте пакеты для распараллеливания вычислений. Некоторые модели быстрее других. Сначала обучите подмножество.

Попросить помощи

Если вы застряли более чем на несколько часов, в зависимости от задачи, обязательно обратитесь за помощью. Если вы застряли на необоснованное количество часов, ждать уже не продуктивно. Индивидуальная помощь, форум, слабые каналы, Quora - отличные каналы.

Управление версиями модели

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

Долгосрочные функции

Есть ограничения на вычислительную мощность, память, а также на тензорную обработку, такую ​​как GPU и TPU. Важно оптимизировать производительность. Попробуйте определить узкие места, вернитесь к основам и подумайте о структуре данных, алгоритмах, Big O, подумайте о том, как квантовать количество операций, которые вы выполняете. Например, функция .map() может быть медленной, потому что она выполняет итерацию по каждой ячейке фрейма данных Pandas, и в каждой операции сопоставления может быть больше операций. Количество столбцов x Количество ячеек x Количество подопераций, умножение может быстро увеличить количество операций. И поэтому операция занимает много времени.

Асимметричная матрица неточностей

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