Перцептрон

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Сконфигурируем входы нейрона

Перцептрон

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

Устанавливаем первоначальное состояние нейрона

Первоначальное состояние на входе и выходе нейрона

Конфигурируем порты программы

Устанавливаем скорость серийного порта 9600 бод
а также подтягиваем две кнопки на внутреннее сопротивление командой INPUT_PULLUP и конфигурируем выход нейрона на 13 пин ардуино (можете назначить любой свободный порт также как входные нейроны).

Основной цикл программы

Основная программа обработки сигналов в самом нейроне и формирование выходного ответа после получения входных данных

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

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

// Вход нейрона const int en1 = 12;//определяем вход нейрона const int en2 = 11;//определяем вход нейрона const int z_out = 13;//определяем выход нейрона  // Веса нейрона float w1 = 0.5;//определяем веса нейрона float w2 = 0.3;//определяем веса нейрона float theta = 0.6;// сдиг нейрона для предотвращения переобучения  float z = 0;//начальное состояние нейрона  //Состояние входа и вихода нейрона int x1 = 0;//определяем состояние на входе нейрона int x2 = 0;//определяем состояние на входе нейрона int zr = 0;//определяем состояние на выходе нейрона   void setup() {//Конфигурация портов програмы    Serial.begin(9600);//скорость роботы порта   pinMode(en1, INPUT_PULLUP);//вход первого порта   pinMode(en2, INPUT_PULLUP);//вход второго порта   pinMode(z_out, OUTPUT);//выходной порт  }  void loop() {//основной цикл програмы    neyron();//обработка сигналов в самом нейроне    z = ((x1 * w1) + (x2 * w2)) - theta;//перещитываем состояния на входе нейрона    if (z >= 0)//если состояние нейрона после перещета больше 0 то...   {     digitalWrite(z_out, HIGH);//на цыфровом пине устанавливаем состояние     zr = 1;//пишем выход нейрона как высокий   }   else//если нет то...   {     digitalWrite(z_out, LOW);//на цыфровом пине устанавливаем состояние     zr = 0;//пишем выход нейрона как низкий   }   Serial.print("x1 = ");//выводим в серийный порт надпись   Serial.print(x1);//выводим в серийный порт состояние первого входа   Serial.print("x2 = ");//выводим в серийный порт надпись   Serial.print(x2);//выводим в серийный порт состояние второго нейрона   Serial.print("zr = ");//выводим в серийный порт надпись   Serial.print(zr);//выводим состояние нейрона на выходе   delay(50);//утанавливаем задержку }   void neyron()//обработка входных сигналов поступающих в нейрон {   if (digitalRead(en1) == LOW)//если после считывание первого входа состояние низкое то ...   {     x1 = 1;//устанавливаем на первом входе нейрона 1   }   else//если нет то...   {     x1 = 0;//устанавливаем на первом входе нейрона 0   }   if (digitalRead(en2) == LOW)//если после считывание первого входа состояние низкое то ...   {     x2 = 1;//устанавливаем на втором входе нейрона 1   }   else//если нет то...   {     x2 = 0;//устанавливаем на первом входе нейрона 0   }   return x1, x2;//передаем состояние входов в основной цикл }

Источник: usamodelkina.ru

Комментарии: