Коды ошибок счетчика нейрон

Содержание

Термин «нейронные сети» сейчас можно услышать из каждого утюга, и многие верят, будто это что-то очень сложное. На самом деле нейронные сети совсем не такие сложные, как может показаться! Мы разберемся, как они работают, реализовав одну сеть с нуля на Python.

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

1. Составные элементы: нейроны

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

Внутри нейрона происходят три операции. Сначала значения входов умножаются на веса:

Затем взвешенные входы складываются, и к ним прибавляется значение порога b:

Наконец, полученная сумма проходит через функцию активации:

Функция активации преобразует неограниченные значения входов в выход, имеющий ясную и предсказуемую форму. Одна из часто используемых функций активации – сигмоида:

СигмоидаСигмоида

Сигмоида выдает результаты в интервале (0, 1). Можно представить, что она «упаковывает» интервал от минус бесконечности до плюс бесконечности в (0, 1): большие отрицательные числа превращаются в числа, близкие к 0, а большие положительные – к 1.

Простой пример

Допустим, наш двухвходовой нейрон использует сигмоидную функцию активации и имеет следующие параметры:

w=[0, 1] – это всего лишь запись w1=0, w2=1 в векторном виде. Теперь зададим нашему нейрону входные данные: x=[2, 3]. Мы используем скалярное произведение векторов, чтобы записать формулу в сжатом виде:

Наш нейрон выдал 0.999 при входах x=[2, 3]. Вот и все! Процесс передачи значений входов дальше, чтобы получить выход, называется прямой связью (feed forward).

Пишем код для нейрона

Настало время написать свой нейрон! Мы используем NumPy, популярную и мощную расчетную библиотеку для Python, которая поможет нам с вычислениями:

Узнаете эти числа? Это тот самый пример, который мы только что рассчитали! И мы получили тот же результат – 0.999.

2. Собираем нейронную сеть из нейронов

Нейронная сеть – это всего лишь несколько нейронов, соединенных вместе. Вот как может выглядеть простая нейронная сеть:

У этой сети два входа, скрытый слой с двумя нейронами (h1 и h2) и выходной слой с одним нейроном (o1). Обратите внимание, что входы для o1 – это выходы из h1 и h2. Именно это создает из нейронов сеть.

Пример: прямая связь

Давайте используем сеть, изображенную выше, и будем считать, что все нейроны имеют одинаковые веса w=[0, 1], одинаковые пороговые значения b=0, и одинаковую функцию активации – сигмоиду. Пусть h1, h2 и o1 обозначают выходные значения соответствующих нейронов.

Что получится, если мы подадим на вход x=[2, 3]?

Если подать на вход нашей нейронной сети x=[2, 3], на выходе получится 0.7216. Достаточно просто, не правда ли?

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

Пишем код нейронной сети

Давайте реализуем прямую связь для нашей нейронной сети. Напомним, как она выглядит:

Мы снова получили 0.7216! Похоже, наша сеть работает.

3. Обучаем нейронную сеть (часть 1)

Допустим, у нас есть следующие измерения:

Имя Вес (в фунтах) Рост (в дюймах) Пол
Алиса 133 (54.4 кг) 65 (165,1 см) Ж
Боб 160 (65,44 кг) 72 (183 см) М
Чарли 152 (62.2 кг) 70 (178 см) М
Диана 120 (49 кг) 60 (152 см) Ж

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

Мы будем представлять мужской пол как 0, женский – как 1, а также сдвинем данные, чтобы их было проще использовать:

Имя Вес (минус 135) Рост (минус 66) Пол
Алиса -2 -1 1
Боб 25 6 0
Чарли 17 4 0
Диана -15 -6 1

Потери

Прежде чем обучать нашу нейронную сеть, нам нужно как-то измерить, насколько «хорошо» она работает, чтобы она смогла работать «лучше». Это измерение и есть потери (loss).

Мы используем для расчета потерь среднюю квадратичную ошибку (mean squared error, MSE):

Давайте рассмотрим все используемые переменные:

(ytrue-ypred) 2 называется квадратичной ошибкой. Наша функция потерь просто берет среднее значение всех квадратичных ошибок – поэтому она и называется средней квадратичной ошибкой. Чем лучшими будут наши предсказания, тем меньшими будут наши потери!

Лучшие предсказания = меньшие потери.

Обучение нейронной сети = минимизация ее потерь.

Пример расчета потерь

Предположим, что наша сеть всегда возвращает 0 – иными словами, она уверена, что все люди мужчины. Насколько велики будут наши потери?

Имя ytrue ypred (ytrue-ypred)2
Алиса 1 0 1
Боб 0 0 0
Чарли 0 0 0
Диана 1 0 1

Пишем функцию средней квадратичной ошибки

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

Отлично. Идем дальше!

4. Обучаем нейронную сеть (часть 2)

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

Для простоты давайте представим, что в нашем наборе данных только одна Алиса.

Имя Вес (минус 135) Рост (минус 66) Пол
Алиса -2 -1 1

Тогда средняя квадратичная ошибка будет квадратичной ошибкой только для Алисы:

Другой метод – это рассматривать функцию потерь как функцию от весов и порогов. Давайте отметим все веса и пороги нашей нейронной сети:

Теперь мы можем записать функцию потерь как функцию от нескольких переменных:

Предположим, мы хотим отрегулировать w1. Как изменится значение потери L при изменении w1? На этот вопрос может ответить частная производная dL/dw1. Как мы ее рассчитаем?

Прежде всего, давайте перепишем эту частную производную через dypred/dw1, воспользовавшись цепным правилом:

Мы можем рассчитать dL/dypred, поскольку мы уже выяснили выше, что L=(1-ypred) 2 :

Теперь давайте решим, что делать с dypred/dw1. Обозначая выходы нейронов, как прежде, h1, h2 и o1, получаем:

Вспомните, что f() – это наша функция активации, сигмоида. Поскольку w1 влияет только на h1 (но не на h2), мы можем снова использовать цепное правило и записать:

Мы можем сделать то же самое для dh1/dw1, снова применяя цепное правило:

В этой формуле x1 – это вес, а x2 – рост. Вот уже второй раз мы встречаем f'(x) – производную сигмоидной функции! Давайте вычислим ее:

Мы используем эту красивую форму для f'(x) позже. На этом мы закончили! Мы сумели разложить dL/dw1 на несколько частей, которые мы можем рассчитать:

Такой метод расчета частных производных «от конца к началу» называется методом обратного распространения (backpropagation).

Уффф. Здесь было очень много символов, так что не страшно, если вы пока не все понимаете. Давайте покажем, как это работает, на практическом примере!

Пример. Считаем частную производную

Мы по-прежнему считаем, что наш набор данных состоит из одной Алисы:

Имя Вес (минус 135) Рост (минус 66) Пол
Алиса -2 -1 1

Давайте инициализируем все веса как 1, а все пороги как 0. Если мы выполним прямой проход по нейронной сети, то получим:

Наша сеть выдает ypred=0.524, что находится примерно на полпути между Мужским полом (0) и Женским (1). Давайте рассчитаем dL/dw1:

Вот и все! Результат говорит нам, что при увеличении w1, функция ошибки чуть-чуть повышается.

Обучение: стохастический градиентный спуск

Теперь у нас есть все нужные инструменты для обучения нейронной сети! Мы используем алгоритм оптимизации под названием стохастический градиентный спуск (stochastic gradient descent), который определит, как мы будем изменять наши веса и пороги для минимизации потерь. Фактически, он заключается в следующей формуле обновления:

Скорость обучения определяет, как быстро наша сеть учится. Все, что мы делаем – это вычитаем eta*dL/dw1 из w1:

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

Процесс обучения сети будет выглядеть примерно так:

Пишем код всей нейронной сети

Наконец настало время реализовать всю нейронную сеть.

Имя Вес (минус 135) Рост (минус 66) Пол
Алиса -2 -1 1
Боб 25 6 0
Чарли 17 4 0
Диана -15 -6

По мере обучения сети ее потери постепенно уменьшаются:

Теперь мы можем использовать нашу сеть для предсказания пола:

Что теперь?

Вы сделали это! Давайте перечислим все, что мы с вами сделали:

Перед вами – множество путей, на которых вас ждет масса нового и интересного:

Коды ошибок частотных преобразователей Siemens

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

Практически все преобразователи автоматически ведут журнал неисправностей:

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

Рассмотрим в качестве примера коды основных ошибок и предупреждений наиболее распространенных частотных преобразователей серии SINAMICS V20. Устройства выпускает фирма Siemens – один из ведущих производителей оборудования и технических решений электропривода. «Сименс» производит частотные преобразователи для промышленности, инженерных систем зданий и сооружений, других сфер.

При возникновении неисправностей, ненормальных режимов работы, на экран выводится сообщение об ошибке. Код состоит из буквы “F” (ошибка) и номера неисправности. Ошибка отображается до нажатия определенной клавиши, подтверждающей прием сообщения оператором (квитирования). После этого последовательно выводятся в порядке приоритета сообщения о других ошибках и предупреждениях или восстанавливается заданное состояние экрана.

При отклонении рабочих параметров, которое может привести к остановке двигателя, поломкам оборудования или нарушению технологического процесса, выводится предупреждение, состоящее из кода “A” и номера. Предупреждения не квитируются и отображаются до устранения причины.

Основные коды ошибок и предупреждений частотных преобразователей Siemens

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

Ошибки преобразователей частоты Siemens

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

Ошибка «F2» означает недопустимо высокое напряжение. Причина – слишком быстрое торможение в электродинамическом режиме, превышение напряжения в сети. Для устранения требуется убедиться, что номинальное напряжение сети совпадает с номинальными, проверить соответствие времени торможения и инерции на валу, а также активацию Vdc-регулятора и его корректное конфигурирование.

Ошибка «F3» говорит о недопустимо низком значении напряжения. Для устранения необходимо измерить напряжение в сети электропитания.

Ошибка «F4» означает перегрев частотного преобразователя. Возможные причины – перегрузка устройства, отказ или поломка встроенного вентилятора, высокая температура окружения, недопустимая частота импульсов. В этом случае нужно убедиться в правильном выборе частотника по мощности, соответствии нагрузки техническим возможностям, нормальной работе вентилятора, проверить температуру в месте монтажа устройства.

Ошибка «F5», такое сообщение говорит о перегрузке, слишком высоком нагрузочном цикле, существенном превышении мощности электродвигателя аналогичной характеристике преобразователя частоты. Для устранения проверить технические характеристики электродвигателя и частотника, убедиться, что нагрузочный цикл не превышает предельных значений.

Ошибка «F6» или критическая температура чипа. Причинами вывода сообщения могут быть недопустимая пусковая нагрузка или шаг нагрузки, недостаточное время разгона. В таком случае проверяют соответствие нагрузки или нагрузочного цикла возможностям привода, мощности частотного преобразователя и двигателя, увеличивают время разгона.

ошибка F0023 преобразователя частоты Siemens

Ошибка «F11» – перегруз электродвигателя. Такое сообщение может выводиться при использовании 4- или 2-полюсных микродвигателей на напряжение до 250 В, при низкой частоте от 15 Гц. Если температура двигателя в норме, требуется переустановить характеристику P0335 равной 1. В остальных случаях проверить нагрузку или нагрузочный цикл, параметры перегрева.

Ошибка «F12» свидетельствует об обрыве линии датчика температуры радиатора частотника. В таких случаях требуется восстановить целостность кабеля.

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

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

Ошибка «F42» – ошибка параметров перепрограммируемого ПЗУ или EEPROM. Меры устранения – перезагрузка частотного преобразователя, при необходимости сброс настроек до заводских и повторное конфигурирование, установка отдельных параметров на значения по умолчанию.

Ошибка «F43» –Ошибка программного обеспечения частотника. Способы устранения – переустановка ПО профильными специалистами.

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

Указаны наиболее распространенные коды ошибок, полный перечень содержит данные о расшифровке сообщений об ошибках ПИД регулятора, копировании данных, сбое защит от нарушений течения технологических процессов и другие.

Коды наиболее часто встречающихся предупреждений

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

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

«A502» – предельное значение напряжения. Такое предупреждение может появиться при торможении электродвигателя при неработающем регуляторе Vdc (параметр P1240 равен 0). Если сообщение остается на длительное время, нужно замерить напряжение в сети питания.

«A503» – снижение напряжения до предельного значения. При этом требуется проверить характеристики сети, при необходимости восстановить питание номинальным напряжением.

«A504» – перегрев частотника, при котором невозможно поддерживать заданную выходную частоту. Устранение – проверить исправность встроенного вентилятора, условия установки частотного преобразователя, соответствие нагрузки на валу электродвигателя.

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

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

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

Таблица ошибок на индикаторе статусной панели

Светодиоды

Приоритет

Описание состояния преобразователя

Источники:

https://proglib. io/p/pishem-neyroset-na-python-s-nulya-2020-10-07

https://prochastotnik. ru/preobrazovateli-chastoty/siemens/kody-oshibok-chastotnyh-preobrazovatelej-siemens/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: