Нейронная сеть

gooodwin
Offline
Зарегистрирован: 01.07.2013

Здравствуйте. Возник вопрос есть ли для ардуино готовые библиотеки нейронной сети????

Заранее благодарен

 

P.S. А можно превести простой пример нейронной сети для ардуино????

 

 

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Нейронные сети бывают разными.

Поэтому для использования той или иной нейронной сети, нужно знать где и для чего она будет использоваться 

krikus
Offline
Зарегистрирован: 22.07.2011

Ээ... сначала думал, что этот вопрос можно смело в топку. Оказалось, действительно есть такая библиотека:(даже готовая) http://diydrones.com/group/arducopter-evolution-team/forum/topics/neuroduino-a-neural-network-library-for-arduino

renoshnik
Offline
Зарегистрирован: 11.04.2013

krikus пишет:

Ээ... сначала думал, что этот вопрос можно смело в топку. Оказалось, действительно есть такая библиотека:(даже готовая) http://diydrones.com/group/arducopter-evolution-team/forum/topics/neuroduino-a-neural-network-library-for-arduino

 

сыылка битая....

krikus
Offline
Зарегистрирован: 22.07.2011

renoshnik пишет:

krikus пишет:

Ээ... сначала думал, что этот вопрос можно смело в топку. Оказалось, действительно есть такая библиотека:(даже готовая) http://diydrones.com/group/arducopter-evolution-team/forum/topics/neuroduino-a-neural-network-library-for-arduino

 

сыылка битая....

...нет. Все открывается.

gooodwin
Offline
Зарегистрирован: 01.07.2013

ОГРОМНОЕ СПАСИБО. Буду разбираться

gooodwin
Offline
Зарегистрирован: 01.07.2013

А ктонибудь делал что нибудь с использованием нейронных сетей???

gooodwin
Offline
Зарегистрирован: 01.07.2013

А кто нибудь пользовался етой библиотекой??? Я скопировал все как надо открыл демо код. А при компиляции выдает след ошибки

In file included from Neuroduino_Example.pde:1:
C:\Program Files\Arduino\libraries\Neuroduino/Neuroduino.h:18:22: error: WProgram.h: No such file or directory
In file included from Neuroduino_Example.pde:1:
C:\Program Files\Arduino\libraries\Neuroduino/Neuroduino.h:31: error: 'boolean' has not been declared
C:\Program Files\Arduino\libraries\Neuroduino/Neuroduino.h:78: error: 'boolean' does not name a type

вторую и третию ошибку я вроде исправил поменяв BOOLEAN на BOOL.(во всяком случае больше ошибки не вылазиют))))  А вот с первой не знаю что делать.?????

gooodwin
Offline
Зарегистрирован: 01.07.2013

Вот собственно демо

#include <Neuroduino.h>

#define NUM_LAYERS 2
#define ETA 0.01
#define THETA 0.0
#define DEBUG false

// used for get_free_memory()
extern int __bss_end;
extern void *__brkval;

int netArray[NUM_LAYERS] = {8,8};
int inputArray[] = {1, -1, 1, -1, -1, 1, -1, 1};
int trainArray[] = {-1, 1, -1, -1, 1, -1, 1, -1};

int pinState;
int lastRead = HIGH;

int netMem;

Neuroduino myNet;

// free memory check
// from: http://forum.pololu.com/viewtopic.php?f=10&t=989#p4218
int get_free_memory(){
  int free_memory;
  if((int)__brkval == 0)
    free_memory = ((int)&free_memory) - ((int)&__bss_end);
  else
    free_memory = ((int)&free_memory) - ((int)__brkval);

  return free_memory;
}

byte arrayToByte(int arr[], int len){
  // Convert -1 to 0 and pack the array into a byte
  int i;
  byte result = 0;
  
  for(i=len-1; i>=0; i--){
    if(arr[i] == -1){
      result &= ~(0 << i);
    } else {
      result |= (1 << i);
    }
  }
  return result;
}

void byteToArray(byte in, int out[]){
	int i, temp;//, out[8];
  
  for(i=0; i<8; i++){
    temp = (in >> i) & 1;
    if(temp == 0) temp = -1;
    out[i] = temp;
  }
}

void printArray(int arr[], int len){
  int i;
  Serial.print("[");
  for(i=0; i<len; i++){
	if (arr[i] == 1) {
		Serial.print(" ");	// Leading space to maintain alignment
	}
    Serial.print(arr[i], DEC);
    if(i != len-1) Serial.print(", ");
  }
  Serial.println("]");
}

int checkMem(){
  Serial.print("Free memory: ");
  Serial.println(get_free_memory(), DEC);
}

void setup(){
  srand(analogRead(0));
  //srand(4711);  // for testing

  Serial.begin(9600);
  netMem = get_free_memory();
  checkMem();
  
  // Neuroduino params: (network array, number of layers, Eta, Theta, debug)
  myNet = Neuroduino(netArray, NUM_LAYERS, ETA, THETA, DEBUG);
  
  netMem = netMem - get_free_memory();
  Serial.print("Net size: ");
  Serial.print(netMem);
  Serial.print(" / Free memory: ");
  Serial.println(get_free_memory());
  
  myNet.randomizeWeights();
  
  pinMode(8, INPUT);
  digitalWrite(8, HIGH);
  
  printArray(inputArray, netArray[0]);
  byte temp = arrayToByte(inputArray, netArray[0]);
  Serial.println(temp, BIN);
  
  int outputArray[8];
  byteToArray(temp, outputArray);
  printArray(outputArray, 8);
  
  // Test activation of initial (randomized) weights

  Serial.print("Current activation: ");
  printArray(myNet.simulate(inputArray), netArray[1]);
  Serial.print("Target activation:  ");
  printArray(trainArray, netArray[1]);
  Serial.println();
}

void loop(){
  pinState = digitalRead(8);
  if(pinState == LOW  && lastRead == HIGH){
    // switch just closed
    
    myNet.train(inputArray, trainArray);
    myNet.printNet();
    
    Serial.print("Current activation: ");
    printArray(myNet.simulate(inputArray), netArray[1]);
    Serial.print("Target activation:  ");
    printArray(trainArray, netArray[1]);
	Serial.println();
  }
  lastRead = pinState;
}

код

carduino.ru
Offline
Зарегистрирован: 06.12.2011

У меня в IDE0023 все прокомпилировалось без ошибок

gooodwin
Offline
Зарегистрирован: 01.07.2013

У меня стоит IDE 1.0.5 и ошибки???? Критично ли переходить к IDE0023 ??? всмысле что большая ли между ними разница???

alex_r61
Offline
Зарегистрирован: 20.06.2012

У кого IDE 1.0 и выше замените в Neuroduino.h

#include "WProgram.h"

на

#if ARDUINO < 100
  #include <WProgram.h>
#else
  #include <Arduino.h>
#endif

gooodwin
Offline
Зарегистрирован: 01.07.2013

Спасибо большое

 

gooodwin
Offline
Зарегистрирован: 01.07.2013

А кто нибудь работал с этой библиотекой???

hukmaos
Offline
Зарегистрирован: 11.05.2014

Кто то занимался этим? Та библиотека что есть - незаконченная и не оптимальна для arduino