икона авиона
Достава у
Ажурирање (11.): Имамо доста залиха свих наших производа, пронађите нас и у    Схоп сада

Како интегрисати неуронску мрежу у ваш СБЦ

У овом чланку ћемо научити како да интегришемо неуронску мрежу у СБЦ. Направићемо трослојну неуронску мрежу да апроксимирамо функцију син(к).

Процес је подељен у два дела: 1. обука мреже која ће се обављати на рачунару и; 2. вођење мреже, што ће се обављати у СБЦ.

Део 1. Обука неуронске мреже

За овај део користићемо Јупитер свеске, са библиотекама Керас, Нумпи и Пилаб.

Корак 1. Увезите потребне библиотеке

Корак 2. Креирајте скуп података за обуку

Наш скуп података се састоји од 10000 насумичних бројева у опсегу 0 – 2*пи као улаз Кс и њихове одговарајуће син функције као улаза И. Имајте на уму да смо подесили опсег И у опсегу од 0 до 1.

Корак 3. Креирајте неуронску мрежу

Да бисмо креирали неуронску мрежу, креирамо објекат модела и додамо му 3 слоја. Ово се ради преко АПИ-ја који обезбеђује библиотека Керас.

Број неурона ће бити 32 за први слој, 32 за средњи слој и 1 за излаз.

Користићемо релу и сигмоидну активацију.

Оптимизатор који се користи је Адам и функција грешке МСЕ.

Број мрежних параметара је 1153.

Корак 4. Обука

Када се обучава, неуронска мрежа користи скуп података да прилагоди своје параметре на такав начин да се грешка минимизира.

У овом случају, проследили смо цео скуп података кроз мрежу 10 пута, у групама од 32 узорка.

Као што видимо, на крају тренинга грешка је веома мала, 2.5е-5.

Корак 5. Верификација

Сада ћемо тестирати неуронску мрежу последњи пут и упоредити је са очекиваним вредностима. Као што се види на графикону, мрежа прилично добро апроксимира синусну функцију.

Корак 6. Извезите податке

Ова функција вам омогућава да извезете тежине неуронске мреже у текстуалну датотеку, а затим је учитате са СБЦ-а.

Део 2. Извршење на СБЦ

Пре свега, размотрићемо имплементацију неуронске мреже.

Неуронска мрежа је подељена у 4 класе: Неурална_мрежа, Лаиер, Перцептрон и Активација.

Свака класа у основи има 1 метод који се зове процес који је задужен за обављање целог посла, као и методе учитавања и чувања.

Активирање класе, имплементира функције линеарне, релу, сигмоидне и танх активације.

Перцептрон класа је одговорна за извођење свих множења. Имајте на уму да је функција векторског множења имплементирана у АСМ како се не би жртвовале перформансе.

АСМ вс Питхон имплементација

Векторско множење је одговорно за највећи део употребе ЦПУ-а, тако да његова имплементација на АСМ-у омогућава знатно побољшање перформанси библиотеке. У овом примеру се изводи једноставно векторско множење 100×100. За Питхон имплементацију је потребно 1339 ус, док је за имплементацију АСМ потребно само 28 ус. Ово је око 50 пута брже уз очување истих излазних вредности.

слој класа паралелно групише неколико перцептрона.

Класа Неуронске мреже слаже све слојеве мреже.

Коначно, можемо да прегледамо/проверимо коришћење мреже.

Копираћемо датотеку са пондерима у СБЦ и извршити следећу маин.пи.

Овај код учитава мрежу из датотеке сине.унн и израчунава синус од 0.123, а затим приказује вредност добијену мрежом и реални синус, као и време израчунавања у микросекундама.

Излаз:

Као што видимо, излаз апроксимира очекивану вредност са 4 децимале.

Ова мрежа, са 1153 пондера, захтевала је 4612 (1153*4) бајтова РАМ-а за чување тежина у флоат вредности и 5.8 мс за обраду.

Ако вам се допао овај садржај, можете нас пратити даље Twitter, You Tube, Facebook or ЛинкедИн да будете у току са оваквим садржајем.

Имате питања или захтеве?
Контактирајте нас! Одговорићемо <24 сата!

Икона
Контакт ArduSimple
близу

Желите да сазнате више о ГПС/РТК?

1. Наш инжењерски тим ће вас контактирати да реши сва питања
2. Обавештаваћемо вас о промоцијама и новим издањима производа
3. Чућете се само када имамо важне вести, нећемо слати нежељену е-пошту