sagacitysite / brian2_loihi Goto Github PK
View Code? Open in Web Editor NEWA Loihi emulator based on Brian2
License: MIT License
A Loihi emulator based on Brian2
License: MIT License
The LoihiStateMonitor class should strip the units (milliseconds) before returning the times, t. Otherwise one needs to import brian2 to remove the units.
In particular, define:
mon_I = LoihiStateMonitor(neuron, 'I')
After running simulation, the following should return a unitless array:
times = mon_I.t
Here we divide by the decay_v and decay_I, which can be zero.
Need to remove the taus or add a check.
Consider using type hinting: https://docs.python.org/3/library/typing.html
Provide more examples in a repository
Add to https://zenodo.org.
Loihi emulator classes should inherit the name property. This way we can set and get states of other objects via the network object.
This doesn't get the number of weight bits, but instead gets exponent for the "resolution".. i.e. 2^n, where n=0,1,..,8, and n=8 - nb - is_mixed.
We should rename this and perhaps have it directly return 2^n
Affected is this equation in loihi_synapses.py
add_or_not = sign(w_updated){is_mixed}(rand() > 0.5) : 1 (constant over dt)
From where do you know the Loihi dynamics. Add references to publications.
Mention how/if mapping/routing constraints are respected.
I am implementing the anisotropic network in the emulator and for that one needs to give each neuron an (x,y) coordinate on the torus. The following needs to be added to the neuron equations to enable this:
x : 1
y : 1
x_shift : 1
y_shift : 1
I will open a second issue, because it could be useful to instead just allow the user to pass the LoihiNeuronGroup a string that should be added to the equations.
While implementing the anisotropic network, I realised we need to allow neurons to have positions/shifts values (see #16).
It would be better to allow more flexibility and let the user pass the neuron group a string or list/dict of variables that will be added to the neuron equations.
Hey guys,
now that you have an Loihi emulator in Brian2, wouldn't it be great to have a software package that translates Loihi-compatible Brian2 code directly to whatever languages Loihi uses? My long term goal would be to be able to chose Loihi simply as a simulation backend in Brian2. Are there any plans for that?
Best,
Tristan
A neuron group can only have a fixed value for each identifier for all its neurons.
This way one need to create a loihi_neuron_group for every identifier combination.
But Brian can do better because one can do the following:
Equation = 'dv/dt = v/tau : 1'
n = NeuronGroup(4096, Equation)
n[0].tau = 1
n[3].tau = 100
n.tau = 'i'
This provides great flexibility.
The problem right now is that the emulator does not use internal variables for the neuron model, rather replace tau with a direct float value via string manipulation.
By making it a variable the emulator would provide more flexibility but also (may one can use @variable.setter if subgroups are used) loose the option to check if the input the user gives is correct i.e. fitting in the range of Loihi values.
Consider trademark issues.
I am implementing the anisotropic network in the emulator and for that one needs to give each neuron an (x,y) coordinate on the torus. The following needs to be added to the neuron equations to enable this:
x : 1
y : 1
x_shift : 1
y_shift : 1
I will open a second issue, because it could be useful to instead just allow the user to pass the LoihiNeuronGroup a string that should be added to the equations.
Add dependencies on Brian2 and the needed Python version. E.g. add a setup.py
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.