Возможно работает не проверял

Содержание
  1. Как диагностировать и исправить проблемы с подключением к Интернету
  2. Проверьте локальную сеть
  3. Проверьте подключение к Интернету
  4. 37 причин, почему ваша нейросеть не работает
  5. Содержание
  6. 0. Как использовать это руководство?
  7. I. Проблемы с набором данных
  8. 1. Проверьте входные данные
  9. 2. Попробуйте случайные входные значения
  10. 3. Проверьте загрузчик данных
  11. 4. Убедитесь, что вход соединяется с выходом
  12. 5. Взаимоотношение между входом и выходом слишком случайно?
  13. 6. Слишком много шума в наборе данных?
  14. 7. Перемешайте набор данных
  15. 8. Снизьте несбалансированность классов
  16. 9. Достаточно ли образцов для обучения?
  17. 10. Убедитесь в отсутствии партий с единственной меткой
  18. 11. Уменьшите размер партий
  19. Дополнение 1. Используйте стандартный набор данных (например, mnist, cifar10)
  20. II. Нормализация данных/Проблемы аугментации
  21. 12. Откалибруйте признаки
  22. 13. Слишком сильная аугментация данных?
  23. 14. Проверьте предобработку предварительно обученной модели
  24. 15. Проверьте предварительную обработку для набора обучение/валидация/тестирование
  25. III. Проблемы реализации
  26. 16. Попробуйте решить более простой вариант задачи
  27. 17. Поищите правильную функцию потерь «по вероятности»
  28. 18. Проверьте функцию потерь
  29. 19. Проверьте входные данные функции потерь
  30. 20. Отрегулируйте веса функции потерь
  31. 21. Отслеживайте другие показатели
  32. 22. Проверьте каждый кастомный слой
  33. 23. Проверьте отсутствие «зависших» слоёв или переменных
  34. 24. Увеличьте размер сети
  35. 25. Поищите скрытые ошибки измерений
  36. 26. Исследуйте Gradient Checking
  37. IV. Проблемы обучения
  38. 27. Решите задачу для действительно маленького набора данных
  39. 28. Проверьте инициализацию весов
  40. 29. Измените гиперпараметры
  41. 30. Уменьшите регуляризацию
  42. 31. Дайте время
  43. 32. Переходите от режима обучения в режим тестирования
  44. 33. Визуализируйте обучение
  45. 34. Попробуйте иной оптимизатор
  46. 35. Взрыв/исчезновение градиентов
  47. 36. Ускорьте/замедлите обучение
  48. 37. Устранение состояний NaN

Как диагностировать и исправить проблемы с подключением к Интернету

Проверьте локальную сеть

Перед тем, как приступить к диагностике подключения к Интернету, проверьте для начала вашу локальную сеть. Многие ошибки подключения к Всемирной паутине на самом деле являются проблемами локальной сети (LAN).

Если вы спросите у системного администратора крупной компании, с какой основной сетевой проблемой он сталкивался, то как это ни парадоксально, самым популярным ответом станет отключенный сетевой кабель. Действительно, если внешний кабель, подключенный к роутеру или DSL-модему не подключен к порту, выйти в Интернет не получится. Очень часто неполадки возникают после уборки помещения пылесосом. В этом случае вы знаете что делать.

Кроме того, если выше беспроводное соединение не работает, проверьте, что ваш компьютер подключается к правильной точке доступа. Если устройство пытается подключиться к старой сети Wi-Fi, соединение установить не удастся.

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

Если в домашней сети вы используете только беспроводные подключения, убедитесь, что ваши точки доступа работают. Отличным инструментом для этого станет приложение Network Analyzer Pro для Android или iOS. Хотя оно предназначено для специалистов, приложение является очень простым в использовании и позволяет просматривать активные беспроводные сети. В Windows 10 можно воспользоваться приложением WiFi Analyzer, доступным в Магазине Windows.

Если вы все проверили, но беспроводное подключение не позволяет вам выйти в Интернет, тогда попробуйте использовать прямое подключение через Ethernet кабель.

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

Проверьте подключение к Интернету

Прежде всего, нужно выполнить стандартные действия, о которых обычно просят специалисты технической поддержки вашего провайдера. Отключите приходящий сетевой кабель от роутера или DSL-модема, подождите одну минуту и снова его подключите к порту. Подождите еще одну минуту, а затем проверьте, не появился ли Интернет.

Если ничего не произошло, попробуйте отключить роутер на минуту. По-прежнему ничего?

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

В противном случае, вы можете создать заявку на вызов сотрудника компании-провайдера. Причиной “дисконекта” может быть разрыв кабеля в подъезде или на магистральной линии. Физические проблемы часто являются причиной сетевых проблем.

Только будьте готовы подождать. Очень редкой провайдеры реагируют оперативно.

Теперь предположим, что доступ к Интернету восстановлен, но он работает медленно и нестабильно. Во-первых, давайте проверим пропускную способность сети, за которую вы платите деньги. Лучшим сайтом для проверки текущей текущей скорости является Speedtest. Этот сайт управляется сетевой компанией Ookla. Тест показывает скорость скачивания, скорость загрузки и пинг до ближайшего сервера теста.

Ping — это сетевая утилита, которая измеряет время в миллисекундах (мс) между вашим компьютером и тестовым сервером. Чем ниже ваш пинг, тем лучше. Если ваш пинг выше 50 мс — у вас имеется проблема.

Существуют другие сайты тестирования производительности соединения. Например, проверка скорости интернета с помощью Яндекс.Интернетометр, METER.net, Google Fiber Speedtest или Fast.com от Netflix.

Читайте также:  Не работает омыватель заднего стекла сузуки гранд витара 2014

Тест Google Internet Speed стал результатом партнерства между Google и измерительной лабораторией (M-Lab) и доступен в англоязычном поиске Google (введите запрос «check internet speed» на английской версии поисковика). В дополнение к скорости этот тест измеряет задержки сети. Задержка — это показатель того, как быстро вы получаете ответ от сервера. Низкое время отклика важно для приложений реального времени, таких как видеозвонки и онлайн-игры. Задержка измеряется в мс (миллисекунды) и похожа на ping, но является показателем постоянных задержек между вашей системой и серверами.

Некоторые виды подключений, в частности dial-up и спутниковые соединения, всегда вызывают отображение больших значений пинга и задержек. Вы ничего не можете с этим поделать — эти технологии просто не способны на это. С практической точки зрения, это означает, например, онлайн-игры и видеоконференции могут работать нестабильно с данными видами Интернет-соединения.

У Интернет-провайдером также есть свои собственные тесты производительности. Вообще говоря, эти тесты покажут вам максимальную скорость. Ничего удивительного! В реальном мире провайдеры обычно переоценивают свои возможности и не обеспечивают заявленную пропускную способность.

Тем не менее, в разное время показатели пропускной способности могут заметно отличаться. Это связано с тем, что пропускная способность кабельного интернета распределяется между пользователями в одном и том же сегменте кабеля. Таким образом, если с утра фиксируется высокая скорость Интернета, то вечером она может падать, потому что другие пользователи начинают смотреть Youtube, играть в онлайн-игры и т.д. Даже при низком пинге и быстрой пропускной способности ваше соединение может все еще быть не таким качественным. Это потому, что пинг, латентность и пропускная способность не дают полную картину. Вы можете потерять пакеты или страдать от фазового дрожания цифрового сигнала данных.

Джиттер или задержка пакетов — это интервал времени, который требуется для того, чтобы интернет-пакеты поступали в вашу систему. Так, например, если вы пинговали сайт один раз, для отправки ответа потребовалась 1 миллисекунда, а пинг следующего пакета составил 10 миллисекунд, то у вас наблюдается ужасный случай джиттера. Иногда джиттер настолько плох, что пакеты теряются.

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

Вы можете проверить, есть ли у вас джиттер, используя тест DSLReport Jitter. Этот тест измеряет уровень джиттера путем пингования сайтов со всего мира из вашей системы. Если вы уровень джиттера велик, то ваше Интернет-соединение, скорее всего, страдает от перегруженности сети где-то вверху по линии.

В идеале вам нужна нулевая потеря пакетов, но обычный пользователь Интернета может спокойно жить с 1 или 2 процентами потери. Если вы постоянно наблюдаете джиттер, поменяйте своего Интернет-провайдера.

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

Все еще не решили проблему? Вызовите специалиста или при наличии специальных знаний, попробуйте устранить неполадки самостоятельно с помощью мощных инструментов, таких как WireShark, Logic Monitor или Spiceworks Network Monitor. Помните, что любая сетевая проблема может быть исправлена при наличии определенного опыта.

Источник

37 причин, почему ваша нейросеть не работает

Сеть обучалась последние 12 часов. Всё выглядело хорошо: градиенты стабильные, функция потерь уменьшалась. Но потом пришёл результат: все нули, один фон, ничего не распознано. «Что я сделал не так?», — спросил я у компьютера, который промолчал в ответ.

Почему нейросеть выдаёт мусор (например, среднее всех результатов или у неё реально слабая точность)? С чего начать проверку?

Сеть может не обучаться по ряду причин. По итогу многих отладочных сессий я заметил, что часто делаю одни и те же проверки. Здесь я собрал в удобный список свой опыт вместе с лучшими идеями коллег. Надеюсь, этот список будет полезен и вам.

Содержание

0. Как использовать это руководство?

Многое может пойти не так. Но некоторые проблемы встречаются чаще, чем другие. Я обычно начинаю с этого маленького списка как набора экстренной помощи:

  1. Начните с простой модели, которая точно правильно работает для этого типа данных (например, VGG для изображений). Используйте стандартную функцию потерь, если возможно.
  2. Отключите все финтифлюшки, например, регуляризацию и аугментацию данных.
  3. В случае тонкой настройки модели дважды проверьте препроцессинг, чтобы он соответствовал обучению первоначальной модели.
  4. Удостоверьтесь в правильности входных данных.
  5. Начните с действительно маленького набора данных (2-20 образцов). Затем расширяйте его, постепенно добавляя новые данные.
  6. Начните постепенно добавлять обратно все фрагменты, которые были опущены: аугментация/регуляризация, кастомные функции потерь, пробуйте более сложные модели.
Читайте также:  Запрос посредством фгис егрн не работает

Если ничего не помогло, то приступайте к чтению этого длинного списка и проверяйте каждый пункт.

I. Проблемы с набором данных


Источник: http://dilbert.com/strip/2014-05-07

1. Проверьте входные данные

Проверьте, что входные данные имеют смысл. Например, я не раз смешивал в кучу высоту и ширину изображений. Иногда по ошибке отдавал в нейросеть все нули. Или использовал одну и ту же партию снова и снова. Так что напечатайте/посмотрите пару партий входных данных и плановых выходных данных — убедитесь, что всё в порядке.

2. Попробуйте случайные входные значения

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

3. Проверьте загрузчик данных

С данными всё может быть в порядке, а ошибка в коде, который передаёт входные данные нейросети. Распечатайте и проверьте входные данные первого слоя перед началом его операций.

4. Убедитесь, что вход соединяется с выходом

Проверьте, что несколько образцов входных данных снабжены правильными метками. Также проверьте, что смена местами входных образцов так же отражается на выходных метках.

5. Взаимоотношение между входом и выходом слишком случайно?

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

6. Слишком много шума в наборе данных?

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

Данный пункт достоин отдельного разговора, потому что эта работа показывает точность выше 50% на базе MNIST при 50% повреждённых меток.

7. Перемешайте набор данных

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

8. Снизьте несбалансированность классов

Может, в наборе данных тысяча изображений класса А на одно изображение класса Б? Тогда вам может понадобиться сбалансировать функцию потерь или попробовать другие подходы устранения несбалансированности.

9. Достаточно ли образцов для обучения?

Если вы обучаете сеть с нуля (то есть не настраиваете её), то может понадобиться очень много данных. Например, для классификации изображений, говорят, нужна тысяча изображений на каждый класс, а то и больше.

10. Убедитесь в отсутствии партий с единственной меткой

Такое случается в отсортированном наборе данных (то есть первые 10 тыс. образцов содержат одинаковый класс). Легко исправляется перемешиванием набора данных.

11. Уменьшите размер партий

Эта работа указывает, что слишком большие партии могут понизить у модели способность к обобщению.

Дополнение 1. Используйте стандартный набор данных (например, mnist, cifar10)

При тестировании новой сетевой архитектуры или написании нового кода сначала используйте стандартные наборы данных вместо своих. Потому что для них уже есть много результатов и они гарантированно «разрешимые». Там не будет проблем с шумом в метках, разницей в распределении обучение/тестирование, слишком большой сложностью набора данных и т.д.

II. Нормализация данных/Проблемы аугментации

12. Откалибруйте признаки

Вы откалибровали входные данные на нулевое среднее и единичную дисперсию?

13. Слишком сильная аугментация данных?

Аугментация имеет регуляризующий эффект. Если она слишком сильная, то это вкупе с другими формами регуляризации (L2-регуляризация, dropout и др.) может привести к недообучению нейросети.

14. Проверьте предобработку предварительно обученной модели

Если вы используете уже подготовленную модель, то убедитесь, что используются та же нормализация и предобработка, что и в модели, которую вы обучаете. Например, должен пиксель быть в диапазоне [0, 1], [-1, 1] или [0, 255]?

15. Проверьте предварительную обработку для набора обучение/валидация/тестирование

«… любую статистику предобработки (например, среднее данных) нужно вычислять на данных для обучения, а потом применять на данных валидации/тестирования. Например, будет ошибкой вычисление среднего и вычитание его из каждого изображения во всём наборе данных, а затем разделение данных на фрагменты для обучения/валидации/тестирования».

Также проверьте на предмет наличия различающейся предварительной обработки каждого образца и партии.

III. Проблемы реализации


Источник: https://xkcd.com/1838/

16. Попробуйте решить более простой вариант задачи

Это поможет определить, где проблема. Например, если целевая выдача — это класс объекта и координаты, попробуйте ограничить предсказание только классом объекта.

17. Поищите правильную функцию потерь «по вероятности»

Снова из бесподобного CS231n: Инициализируйте с небольшими параметрами, без регуляризации. Например, если у нас 10 классов, то «по вероятности» означает, что правильный класс определится в 10% случаев, а функция потерь Softmax — это обратный логарифм к вероятности правильного класса, то есть получается

Читайте также:  Как настроить автомат мерседес

После этого попробуйте увеличить силу регуляризации, что должно увеличить функцию потерь.

18. Проверьте функцию потерь

Если вы реализовали свою собственную, проверьте её на баги и добавьте юнит-тесты. У меня часто бывало, что слегка неправильная функция потерь тонко вредила производительности сети.

19. Проверьте входные данные функции потерь

Если вы используете функцию потерь из фреймворка, то убедитесь, что передаёте ей то что нужно. Например, в PyTorch я бы смешал NLLLoss и CrossEntropyLoss, потому что первая требует входных данных softmax, а вторая — нет.

20. Отрегулируйте веса функции потерь

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

21. Отслеживайте другие показатели

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

22. Проверьте каждый кастомный слой

Вы самостоятельно реализовали какие-то из слоёв сети? Дважды проверьте, что они работают как полагается.

23. Проверьте отсутствие «зависших» слоёв или переменных

Посмотрите, может вы неумышленно отключили обновления градиента каких-то слоёв/переменных.

24. Увеличьте размер сети

Может, выразительной мощности сети недостаточно для усвоения целевой функции. Попробуйте добавить слоёв или больше скрытых юнитов в полностью соединённые слои.

25. Поищите скрытые ошибки измерений

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

26. Исследуйте Gradient Checking

Если вы самостоятельно реализовали Gradient Descent, то с помощью Gradient Checking можно убедиться в корректной обратной связи. Дополнительная информация: 1, 2, 3.

IV. Проблемы обучения


Источник: http://carlvondrick.com/ihog/

27. Решите задачу для действительно маленького набора данных

Переобучите сеть на маленьком наборе данных и убедитесь в её работе. Например, обучите её всего с 1-2 примерами и посмотрите, способна ли сеть различать объекты. Переходите к большему количеству образцов для каждого класса.

28. Проверьте инициализацию весов

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

29. Измените гиперпараметры

Может вы используете плохой набор гиперпараметров. Если возможно, попробуйте grid search.

30. Уменьшите регуляризацию

Из-за слишком сильной регуляризации сеть может конкретно недообучиться. Уменьшите регуляризацию, такую как dropout, batch norm, L2-регуляризацию weight/bias и др. В отличном курсе «Практическое глубинное обучение для программистов» Джереми Говард рекомендует в первую очередь избавиться от недообучения. То есть нужно достаточно переообучить сеть на исходных данных, и только затем бороться с переобучением.

31. Дайте время

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

32. Переходите от режима обучения в режим тестирования

В некоторых фреймворках слои Batch Norm, Dropout и другие ведут себя по-разному во время обучения и тестирования. Переключение в подходящий режим может помочь вашей сети начать делать правильные прогнозы.

33. Визуализируйте обучение

«Для весов эти гистограммы должны иметь примерно гауссово (нормальное) распределение, спустя какое-то время. Гистограммы сдвигов обычно начинаются с нуля и обычно заканчиваются на уровне примерно гауссова распределения (единственное исключение — LSTM). Следите за параметрами, которые отклоняются на плюс/минус бесконечность. Следите за сдвигами, которые становятся слишком большими. Иногда такое случается в выходном слое для классификации, если распределение классов слишком несбалансировано».

34. Попробуйте иной оптимизатор

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

Прочтите отличную статью Себастьяна Рудера, чтобы узнать больше об оптимизаторах градиентного спуска.

35. Взрыв/исчезновение градиентов

36. Ускорьте/замедлите обучение

Низкая скорость обучения приведёт к очень медленному схождению модели.

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

Поэкспериментируйте со скоростью обучению, ускоряя либо замедляя её в 10 раз.

37. Устранение состояний NaN

Состояния NaN (Non-a-Number) гораздо чаще встречаются при обучении RNN (насколько я слышал). Некоторые способы их устранения:

  • Уменьшите скорость обучения, особенно если NaN появляются в первые 100 итераций.
  • Нечисла могут возникнуть из-за деления на ноль, взятия натурального логарифма нуля или отрицательного числа.
  • Рассел Стюарт предлагает хорошие советы, что делать в случае появления NaN.
  • Попробуйте оценить сеть слой за слоем и посмотреть, где появляются NaN.

Источник

Оцените статью