diff --git a/docs/museum/eirnn_song_etal2016.md b/docs/museum/eirnn_song_etal2016.md new file mode 100644 index 00000000..691be89d --- /dev/null +++ b/docs/museum/eirnn_song_etal2016.md @@ -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 +[1] 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). diff --git a/docs/museum/index.rst b/docs/museum/index.rst index a0b58557..21541a04 100644 --- a/docs/museum/index.rst +++ b/docs/museum/index.rst @@ -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 diff --git a/ngclearn/components/neurons/graded/leakyNoiseCell.py b/ngclearn/components/neurons/graded/leakyNoiseCell.py index 9ccf4f8e..ab6245ed 100755 --- a/ngclearn/components/neurons/graded/leakyNoiseCell.py +++ b/ngclearn/components/neurons/graded/leakyNoiseCell.py @@ -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 @@ -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, @@ -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,