User Tools

Site Tools


neurali:nemo

NeMo

Esistono due versioni di Nemo

Descrizione

NeMo (2010?12?) è una libreria per realizzare un simulatore di spiking neural network (SNN) ad alte prestazioni,

  • simula reti neurali con NEST modello Izhikevich
    • Nemo adotta per NEST modello Izhikevich una integrazione numerica Eulero con passo di 0.25 ms (altrove dice passo fisso di 1 ms)
  • Si possono aggiungere facilmente nuovi modelli di neuroni come plugin
  • sfrutta l'esecuzione parallela di istruzioni su GPU di tipo CUDA
  • Riesce a simulare reti di 100000 neuroni SNN.
  • NeMo (che non compila CUDA!) è anche una libreria di C++ (con collegamenti per il C e Python)
  • NeMo è supportato da PyNN
  • Nemo (che non compila CUDA!) ha una interfaccia grafica SpikeStream
  • Nemo (che non compila CUDA!) lavora a basso livello: devo aggiungere un neurone alla volta
  • NeMo usa spesso libreria Boost
  • (iSpike può codificare dati in impulsi e viceversa

Domande

  • esistono anche altri modelli di neuroni, tra cui input neuron, ma non esiste output neuron….???
  • esistono i layer su NeMo? no, i neuroni vanno collegati a mano…

Compilazione

Dipendenze:

cmake openmp libboost-filesystem-dev libboost-date-time-dev libboost-system-dev 
libboost-program-options-dev libboost-python-dev nvidia-cuda-toolkit (non free, contrib,130MB) 

Prova

nvcc --version

se ti risponde 5+, sei fregato… vedi nemo_output_compilazione

mkdir build
cd build
CC=gcc-4.7 CXX=g++-4.7 cmake ..
make 
make install 

NOTA: tentativo inutile, nvcc non funziona nemmeno cambiando gcc

nemo output compilazione… e installazione

Definizioni

Lo sviluppatore che vuole usare NeMo per poter avviare una simulazione deve definire:

  • neuroni e sinapsi in un oggetto network
  • parametri in un oggetto configuration
  • oggetto simulation (definito dai due precedenti oggetti)

Per definire un neurone

  • Neurone: modello, indice per posizione, parametri del modello (virgola mobile)
  • Sinapsi: neurone sorgente e obiettivo, peso (virgola fissa), costante TAU conduttanza (max 64ms), plasticità (V/F), indice sinapsi opzionale

Funzione STDP

Dopo aver impostato la plasticità sinaptica tra i singoli neuroni, si può attivare la funzione STDP globale dell'oggetto simulation.

Vedere prima sinapsi eccitatoria e inibitoria

È necessario definire

  • i valori massimi dei pesi sinapsi consentiti (eccitatorio ed inibitorio)
  • la larghezza della finestra STDP
  • un array pre-post pair (quando l'eccitazione anticipa l'attivazione)
  • un array post-pre pair (quando l'attivazione anticipa l'eccitazione)

stdp_learning_method

nemo esempio1 c++

nemo appunti c++

ispike esempio2 insieme a Nemo

neurali/nemo.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1