Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions docs/museum/eirnn_song_etal2016.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Excitatory-Inhibitory Recurrent Neural Network (Song et al.; 2016)

In this exhibit, we create, simulate, and visualize the dynamics and adaptation of the excitatory-inhibitory
recurrent neural network (EI-RNN) originally proposed in (Song et al., 2016) [1].

The model code for this exhibit can be found
[here](https://github.com/NACLab/ngc-museum/tree/main/exhibits/ei_rnn).

<!-- references -->
## References
<b>[1]</b> Song, H. F., Yang, G. R., & Wang, X. J. Training excitatory-inhibitory recurrent neural networks
for cognitive tasks: a simple and flexible framework. PLoS computational biology, 12(2), e1004792 (2016).
1 change: 1 addition & 0 deletions docs/museum/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ of detailed walkthroughs presented in the table of contents below.)

sparse_coding
pc_rao_ballard1999
eirnn_song_etal2016
snn_dc
event_stdp_patches
rl_snn
Expand Down
9 changes: 5 additions & 4 deletions ngclearn/components/neurons/graded/leakyNoiseCell.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ def __init__(
):
super().__init__(name, **kwargs)


self.tau_x = tau_x
self.sigma_pre = sigma_pre ## a pre-rectification scaling factor
self.sigma_post = sigma_post ## a post-rectification scaling factor
Expand Down Expand Up @@ -110,7 +109,6 @@ def advance_state(self, t, dt):
key, skey = random.split(self.key.get(), 2)
eps_post = random.normal(skey, shape=self.x.get().shape) ## post-rectifier distributional noise

#x = _run_cell(dt, self.j_input.get(), self.j_recurrent.get(), self.x.get(), eps, self.tau_x, self.sigma_rec, integType=self.intgFlag)
_step_fns = {
0: step_euler,
1: step_rk2,
Expand Down Expand Up @@ -152,13 +150,16 @@ def help(cls): ## component help function
"states":
{"x": "Update to continuous noisy, leaky dynamics; value at time t"},
"outputs":
{"r": "A linear rectifier applied to rate-coded dynamics; f(z)"},
{"r": "A linear rectifier applied to rate-coded dynamics; f(z)",
"r_prime": "Temporal derivative applied to rate-coded dynamics; f'(z)"},
}
hyperparams = {
"n_units": "Number of neuronal cells to model in this layer",
"batch_size": "Batch size dimension of this component",
"tau_x": "State time constant",
"sigma_pre": "The non-zero degree/scale of (pre-rectification) noise to inject into this neuron"
"act_fx": "Type of rectification function to use",
"sigma_pre": "The non-zero degree/scale of pre-rectification noise to inject into this neuron",
"sigma_post": "The non-zero degree/scale of post-rectification noise to inject into this neuron"
}
info = {cls.__name__: properties,
"compartments": compartment_props,
Expand Down
Loading