Перейти к содержанию
    

Модуль на VHDL кусочно-линейной (семь участков) апроксимации функции активации y = tanh(x), не имеющий умножений.

Приветствую, народ!

Когда-то искал в сети готовое решение функции активации для проб NN...  А тут вынужденная пауза в деятельности.  Хочу поделиться простым решением для фантазеров.

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

SIGMOIDA.ZIP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!  Как-то не солидно получилось...  :to_become_senile:

Ценность предыдущего варианта может быть интересна чисто как студенческая при освоении языка и симуляции. Разве что принять к сведению.  Там сжатие только в два раза...  А для NN это супер-важно!

По этому примеру сделал новый вариант (с той же латентностью и одиннадцатью кусочно-линейных фрагментов) со сжатием в 16 раз ( 12 разрядов на входе и 8 на выходе).  С вопросами в личку... Извините, запаролил по нужде.       :cray:

image.thumb.png.a7529163e545735d079acfb6b130a873.png

 

SIGMOIDyn.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..Наконец-то мной подано заявление на пенсию и получение ИНН, а также полис мед обслуживание!

В честь этого даю код пароля     2030601038.   Вперед фантазеры   NN   !!!!!

Отмечу, что благотворительности не дождался НИКАКОЙ...  Спасибо за науку!

По-русски надо жить!  Впроголодь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вижу  пассивный интерес к теме.  Только один человек скачал исходник...

Принял к сведению...   Смотрю уже из интереса к теме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, Мур said:

Вижу  пассивный интерес к теме.  Только один человек скачал исходник...

Принял к сведению...   Смотрю уже из интереса к теме

Сочувствую.Неудачная релокация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

https://fpga-systems.ru/publ/

 

там уже выгладывали подобные статьи, например

https://fpga-systems.ru/publ/raznoe/poznavatelnoe/vychislenie_dvoichnogo_logarifma_iteracionnym_metodom_na_plis/16-1-0-138

https://fpga-systems.ru/publ/raznoe/poznavatelnoe/potochnoe_vychislenie_dvoichnogo_logarifma/16-1-0-144

https://fpga-systems.ru/publ/xilinx/ide/primenenie_system_generator_dlja_modelirovanija_hdl_blokov_na_primere_sistemy_avtomaticheskoj_regulirovki_usilenija/35-1-0-133

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, quato_a said:

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

....Тут скорее важна сама идея!  Настолько она проста...

Я не случайно в тексте писал "Рекомендую уточнить уровень аппроксимации по формуле...", чтобы можно было организовать аппроксимацию точнее (перфекционистам в радость!). Я это делал быстро и довольно грубо, но для чернового варианта вполне сгодится, когда сеть прототипа уже обучена и известны все коэффициенты и разрядности(тут у меня большое допущение) для переноса и сквозного прогона.

Итак,- тут важны 3 момента,-   1) сохранить наклон кривой y = 4*x в младших разрядах по оси Х (старшие будут участвовать с сатурации)  в районе максимальной крутизны, а все остальные фрагменты уже под сжатие должны браться с наклоном из ряда степени двойки. Благодаря этому я ухожу от умножений;

         2) основная трата ресурса ПЛИС на компарирование для построения диапазонов разбиения (под выбор наклона аппроксимирующего линейного фрагмента);

         3) сборка рабочего кода на выход производится мультиплексорами из 11 фрагментов линейных прямых с разной постоянной составляющей (это +сумматоры). Кроме нулевой области.

Я сверял со  значениями формулы сами отсчеты в симуляции. Погрешность допускал +\- 5 тиков в выходном диапазоне +\-  127 (кроме краёв, где уже наступило насыщение и отсчеты особо не интересны) . Самое ответственное место  нулевая область, которую я называю "зрачок нейрона".

И последнее, не маловажное... Можно построить процесс моделирования самой сети и обучения из расчета именно такой (не идеальной) функции активации, чтобы уйти от академизма в подходе ради экономии ресурса.  Ведь таких мест в дизайне по числу нейронов!    ...Тем более в самой природе характер нелинейности вряд-ли идеален.   Это должно работать!

image.thumb.png.8467ea73d9b10b40131bd1b426063451.png

А сэкономленные умножители как раз пригодятся во взвешивании по коэффициентам!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я совсем не в теме - однако "какая связь между Нейронные сети и машинное обучение и вычислением синусов косинусов ?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 час назад, Alex77 сказал:

я совсем не в теме - однако "какая связь между Нейронные сети и машинное обучение и вычислением синусов косинусов ?"

Машинное обучение производит подбор весовых коэффициентов программной нейронной сети по DataSet..

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

Где тут вычисление синусов\косинусов? Тут аппроксимация гиперболического тангенса как основа классической функции активации!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема почищена. Продолжение приведёт к readonly на неделю каждому продолжившему развитие оффтопика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/19/2023 at 8:37 PM, Мур said:

Ценность представляет этот вариант, а не первый!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...