Neural simulation language nsl
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Neural Simulation Language NSL PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on
  • Presentation posted in: General

Neural Simulation Language NSL. Overview. Introduction NSLM Example (Max Selector) NSLS Downloading and installing NSL. Introduction. NSL is a platform for Building neural architectures (modeling) NSLM NSLJ & NSLC Executing them (simulation). NSLS

Download Presentation

Neural Simulation Language NSL

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Neural simulation language nsl

Neural Simulation LanguageNSL


Overview

Overview

  • Introduction

  • NSLM

  • Example (Max Selector)

  • NSLS

  • Downloading and installing NSL


Introduction

Introduction

  • NSL is a platform for

  • Building neural architectures (modeling)

    • NSLM

      • NSLJ & NSLC

  • Executing them (simulation).

    • NSLS

  • NSL provides tools for modeling complex neural systems - especially (but not only) when the neurons are modeled as leaky integrator neurons.


Methodology

Methodology

  • The general methodology for making a complex neural model of brain function is to combine different modules corresponding to different brain regions.

  • To model a particular brain region, we divide it anatomically or physiologically into different neural arrays.

  • Each brain region is then modeled as a set of neuron arrays, where each neuron is described for example by the leaky integrator, a single-compartment model of membrane potential and firing rate.


Levels of abstraction

Levels of abstraction

  • A complete model in NSL requires the following components:

    • a set of modules defining the entire model

    • neurons comprised in each neural module

    • neural interconnections

    • neural dynamics

    • numerical methods to solve the differential equations.


Example of modules

Example of modules


Leaky integrator

Leaky integrator


Simulation

Simulation

1

2

6

7

3

4

5


Simulation methods

Simulation Methods

  • initSys

  • initModule

  • makeConn

  • … (simulation steps)

  • endModule

  • endSys


Simulation methods1

Simulation Methods

  • initTrainEpoch

    • initTrain

    • simTrain

    • endTrain

  • endTrainEpoch

  • initRunEpoch

  • initRun

  • simRun

  • endRun

    • endRunEpoch

  • train

    doTrainEpochTimes

    trainAndRunAll

    run

    doRunEpochTimes


    Model structures

    Model Structures

    • Model

      • Highest level

    • Modules

      • NeuralNetworks

    • InModules

    • OutModules

      • Graphic Interfaces

    • MotorModules

      • Robotics

    • NslClass

      • Libraries

      • New Canvases

      • New NSLS Commands


    Nslm types

    Primitive types

    int

    float

    double

    boolean

    char

    NslData types (0, 1, 2, 3, 4)

    NslInt

    NslFloat

    NslDouble

    NslBoolean

    NslString (0)

    Could be public, private or protected.

    NslPort types (0, 1, 2, 3, 4)

    NslDinInt

    NslDinFloat

    NslDinDouble

    NslDinBoolean

    NslDinString (0)

    NslDoutInt

    NslDoutFloat

    NslDoutDouble

    NslDoutBoolean

    NslDoutString (0)

    Ports must be public

    NSLM Types


    Max selector model

    Max Selector Model

    • The details of this model can be found in section 4.4 of TMB2.

    The model uses competition mechanisms to obtain, in many cases, a single winner in the network where the input signal with the greatest strength is propagated along to the output of the network.


    Max selector model 2

    Max Selector Model (2)


    Max selector model 3

    Max Selector Model (3)

    MaxSelectorModel

    MaxSelector

    Output

    Stimulus

    ULayer

    VLayer


    Maxselectormodel

    MaxSelectorModel

    • nslImport nslAllImports;

    • nslImport MaxSelectorStimulus;

    • nslImport MaxSelector;

    • nslImport MaxSelectorOutput;

    • nslModel MaxSelectorModel() {

    • nslConst int size = 10;

    • private MaxSelectorStimulus stimulus(size);

    • private MaxSelector maxselector(size);

    • private MaxSelectorOutput output(size);

    • public void initSys() {

    • system.setRunEndTime(10.0);

    • system.nslSetRunDelta(0.1);

    • }

    • public void makeConn() {

    • nslConnect(stimulus.s_out, maxselector.in);

    • nslConnect(stimulus.s_out, output.s_out);

    • nslConnect(maxselector.out, output.uf);

    • }

    • }


    Maxselectorstimulus

    MaxSelectorStimulus

    • nslImport nslAllImports;

    • nslModule MaxSelectorStimulus(int size) {

    • public NslDoutDouble1 s_out(size);

    • public void initRun() {

    • s_out=0;

    • s_out[1]=0.5;

    • s_out[3]=1.0;

    • }

    • }


    Maxselectoroutput

    MaxSelectorOutput

    • nslImport nslAllImports;

    • nslOutModule MaxSelectorOutput(int size) {

    • public NslDinDouble1 s_out(size);

    • public NslDinDouble1 uf(size);

    • private NslDouble1 up(size);

    • private boolean worked= false;

    • public void initModule() {

    • up.nslSetAccess('W');

    • nslAddAreaCanvas(s_out,0,1);

    • nslAddTemporalCanvas(up,-2.5,2.5);

    • nslAddAreaCanvas(uf,0,1);

    • }

    • public void simRun() {

    • worked=nslSetValue(up,"maxSelectorModel.maxselector.u1.up");

    • }

    • }


    Maxselector

    MaxSelector

    • nslImport nslAllImports;

    • nslImport Ulayer;

    • nslImport Vlayer;

    • nslModule MaxSelector(int size) {

    • public NslDinDouble1 in(size);

    • public NslDoutDouble1 out(size);

    • private Ulayer u1(size);

    • private Vlayer v1();

    • public void makeConn() {

    • nslRelabel(this.in, u1.s_in);

    • nslConnect(u1.uf, v1.u_in);

    • nslConnect(v1.vf, u1.v_in);

    • nslRelabel(u1.uf, this.out);

    • }

    • }


    Ulayer

    ULayer

    • nslImport nslAllImports;

    • nslModule Ulayer(int size) {

    • //inports

    • public NslDinDouble1 s_in();

    • public NslDinDouble0 v_in();

    • //outports

    • public NslDoutDouble1 uf(size);

    • //variables

    • private NslDouble1 up(size);

    • private NslDouble0 w1();

    • private NslDouble0 w2();

    • private NslDouble0 h1();

    • private NslDouble0 k();

    • private double tau;


    Ulayer 2

    Ulayer(2)

    • public void initRun(){

    • uf = 0;

    • up = 0;

    • tau = 1.0;

    • w1= 1.0;

    • w2= 1.0;

    • h1= 0.1;

    • k= 0.1;

    • }

    • public void simRun(){

    • //compute : up=up+((timestep/tu)*du/dt)

    • up = nslDiff(up, tau, -up + w1*uf-w2*v_in - h1 + s_in);

    • uf = nslStep(up,k.get(),0,1.0);

    • }

    • }


    Vlayer

    VLayer

    • nslImport nslAllImports;

    • nslModule Vlayer() {

    • // ports

    • public NslDinDouble1 u_in();

    • // output port

    • public NslDoutDouble0 vf();

    • // variables

    • private NslDouble0 vp(); // neuron potential

    • private NslDouble0 h2();

    • private double tau; // time constant


    Vlayer 2

    Vlayer (2)

    • public void initRun() {

    • vf=0;

    • vp=0;

    • tau=1.0;

    • h2 = 0.5;

    • }

    • public void simRun() {

    • // vp=vp+((timestep/tv)*dv/dt)

    • vp = nslDiff(vp, tau, -vp + nslSum(u_in) -h2);

    • vf = nslRamp(vp);

    • }

    • }


    Compilation

    Compilation

    • One model/module per file

    • The file extension must be .mod

    • We recommend to clean the model directory before compiling with the nslclean command

    • To compile the model you just have to execute the following command: nslc modelName

    • Where modelName is the Name of the file that contains the model structure.

    • For this example we should write: nslc MaxSelectorModel

    • Note that we didn’t write the file extension at the end of the name.

    Class File

    Mod File

    Nlx File

    Java File


    Execution

    Execution

    • To simulate your model you have to use the nsl command.

    • For this example you should write: nsl MaxSelectorModel

    • Two running modes

      • Text (-nodisplay)

      • Graphic interface (default)

    • To redirect the standard output (-stdout console)

    • To redirect the standard error (-stderr console)


    Interface

    Interface


    Interface 2

    Interface (2)


    Neural simulation language nsl

    NSLS

    • To avoid re-compiling every time you modify your model parameters we provide the NSL script language known as NSLS which also provides a dynamic user control environment.

    • NSLS provides the following functionality:

      • NSL model parameter assignment

      • NSL input specification

      • NSL simulation control

      • NSL file control

      • NSL graphics control

    • NSLS is an extension of the well know TCL scripting language, thus providing NSL and TCL functionality.


    Nsls 2

    NSLS (2)

    • NSL command syntax: nsl subcommand [options]

    • Important NSL commands:

      • nsl source fileName

        • (i.e. nsl source hopfield.nsls)

      • nsl set variable value

        • (i.e. nsl set maxSelectorModel.stimulus.s_out {1 0 0.5})

      • nsl get variable

        • (i.e. nsl get maxSelectorModel.stimulus.s_out)

      • nsl run

      • nsl train

      • nsl exit


    Nsls example

    NSLS example

    • #

    • # Hopfield Network

    • #

    • set A {}

    • set B {}

    • set C {}

    • set D {}

    • proc memorize { x } {

    • puts "Memorizing $x"

    • nsl set hopfield.inModule.input $x

    • nsl train

    • }

    • proc test { x d } {

    • nsl set hopfield.dis $d

    • nsl set hopfield.inModule.input $x

    • nsl run

    • }


    Nsls example 2

    NSLS example (2)

    • proc initData {} {

    • global A B C D

    • set A {

    • { -1 -1 1 1 -1 -1 }

    • { -1 1 -1 -1 1 -1 }

    • { -1 1 1 1 1 -1 }

    • { -1 1 1 1 1 -1 }

    • { -1 1 -1 -1 1 -1 }

    • { -1 1 -1 -1 1 -1 }

    • }

    • set B {

    • { 1 1 -1 -1 -1 -1 }

    • { 1 1 -1 -1 -1 -1 }

    • { 1 1 1 1 -1 -1 }

    • { 1 1 -1 -1 1 -1 }

    • { 1 1 -1 -1 1 -1 }

    • { 1 1 1 1 -1 -1 }

    • }

    • … }


    Nsls example 3

    NSLS example (3)

    • proc trainNetwork {} {

    • global A B C D

    • memorize $A

    • memorize $B

    • memorize $C

    • memorize $D

    • }

    • proc NslMain {} {

    • global A B C D

    • puts "Initializing"

    • initData

    • puts "Training"

    • trainNetwork

    • puts "Testing"

    • for { set i 10 } { $i<20 } { incr i } {

    • puts "Testing with distortion $i"

    • test $A $i

    • }

    • nsl set hopfield.dis 0

    • }

    • NslMain


    Downloading nsl

    Downloading NSL

    • First, you will need to install the latest Java SDK; get it directly from Sun at http://java.sun.com/j2se/1.3/.

    • Once this is setup and working, download the entire NSL tree from http://www-scf.usc.edu/~csci564/nsl.tar.gz

    • Extract the archive (Winzip or Pkzip).

    • Edit the file "NSL3_0_n\resume.bat" such that it matches your environment (you will have to specify the path where you installed Java, where you installed NSL, etc).

    • Execute the resume batch file before beginning a NSL session.


    Downloading nsl 2

    Downloading NSL (2)

    • @echo off

    • echo Initializing NSL environment variables

    • set NSLJ_ROOT=C:\salvador\NSL3_0_n

    • set JAVA_HOME=C:\jdk1.3

    • set NSL_OS=windows

    • echo Updating path and classpath

    • set PATH=%JAVA_HOME%\bin;%NSLJ_ROOT%;%PATH%

    • set CLASSPATH=%NSLJ_ROOT%;.;%NSLJ_ROOT%\nslj\src\main;

    • %NSLJ_ROOT%\nslj\src\nsls\jacl;

    • %NSLJ_ROOT%\nslj\src\nsls\tcljava

    • @echo on


    References

    References

    • A Weitzenfeld, MA Arbib and A Alexander, 2002, NSL Neural Simulation Language, MIT Press (in press)

    • An old version is at:

    • http://www-hbp.usc.edu/_Documentation/NSL/Book/TOC.htm

    • For any NSL related questions and bug reports, please send me an email at [email protected]


  • Login