Чи можливо запустити нейромережу на мікроконтролері


23

Чи можете ви реалізувати просту нейронну мережу на мікропроцесорі, такому як Arduino Uno, який буде використовуватися в машинному навчанні?


2
Чому ви хочете це зробити з цікавості?
Джош Вандер Хук

1
Я не фахівець у цій галузі, але останнє, що я чув, тренування NN проводилося в симуляції, і NN реалізовувався на шасі, ймовірно, з контролером вищого рівня, ніж Arduino.
Джош Вандер Хук

1
Ну, вам не потрібно це пов'язувати, ви просто тренуєте NN в симуляції, а потім витягуєте топологію NN, включаючи ваги ребер і зв'язки вузлів. Потім ви програмуєте NN (це просто рівняння, яке ви повинні вирішити). Я думаю, це здається, що перед тим, як взяти на себе цей проект, потрібно ще трохи досліджень.
Джош Вандер Хук

1
Напевно, варто згадати, що мені 16, і це моя основна робота з електроніки для середньої школи.
Йорданія

1
У такому випадку я припускаю, що ви намагаєтесь це здійснити вище та поза призовом?
Джо Бейкер

Відповіді:


10

Не могли б ви тренувати нейромережу на мікроконтролері? Можливо, але будь ласка, не намагайтеся. Чи можете ви використати NN для класифікації тощо на мікроконтролері? Зрозуміло, доки ви можете обчислити результат поширення значень вузла та ребра та обробити множення.


1
Я згоден. Якщо припустити, що ви зможете отримати нейронну мережу необхідної складності для тренувань на Ардуїно, ви все одно будете готові до шаленого часу тренувань. Логічна підготовка NN - це логічний шлях.
fgb

23

Це, безумовно, можливо реалізувати на Arduino. Ось 3 таких бібліотеки Arduino, які реалізують нейронні мережі:

Складність мережі, з якою може впоратися Arduino, є окремим питанням, особливо якщо мова йде про навчання - десятки тисяч ітерацій даних про навчання. Тренування на швидкій машині, а потім копіювання ваг нейронів на Arduino стане розумнішим способом розвитку вашої реалізації.


5

Так. Якщо ви запускаєте його лише в режимі подачі вперед, а тренуєтесь в режимі офлайн десь в іншому місці:

Я запрограмував 3-шарову (5-5-2) подачу ANN на Arduino UNO. Він біг на мобільного робота. Кожного разу, коли робот щось бив, він би перетренував мережу. Частка подачі мережі працювала в режимі реального часу; в той час як тренування заднього розповсюдження займало близько 5 - 20 секунд. Я припускаю, що ви могли б обрізати розмір мережі, а також грати з параметрами, щоб змусити її працювати трохи швидше, але якщо ви плануєте робити зворотні розмноження на Arduino, я думаю, це буде занадто повільно.

Деякі думки щодо прискорення речей включають:

  • Використовувати фіксовану проти плаваючої точки (для MCU без FPU)
  • Використовуйте MCU, який має FPU
  • тан
  • Нехай навчальний етап відбудеться в режимі офлайн на ПК

Ось короткий запис про мережу, яку я зробив.


3

Так, можливо, вбудувати нейромережу в мікроконтролери. У науковій літературі таких прикладів багато, але я можу навести яскравий приклад того, що можна зробити з дуже простим MCU, якщо ти досить розумний. У роботі Evolutionary Bits'n'Spikes автори описують реалізацію нейронної мережі в режимі реального часу, а також генетичний алгоритм для її навчання, щоб керувати роботом диференціального колеса. Весь код працює у крихітному PU16F628 4 МГц MCU, вбудованому в 1-кубічний дюймовий робот Alice.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.