From 38cedb157bce2680d0768429b890bbae2a762c35 Mon Sep 17 00:00:00 2001 From: saran_nns Date: Fri, 6 Aug 2021 19:35:41 +0200 Subject: [PATCH 1/2] #29 freeze arg check --- .ipynb_checkpoints/Untitled-checkpoint.ipynb | 142 +++++++++++++++++++ Untitled.ipynb | 140 ++++++++++++++++++ build/lib/sorn/__init__.py | 2 +- build/lib/sorn/sorn.py | 54 +++---- dist/sorn-0.5.1-py3-none-any.whl | Bin 25220 -> 0 bytes dist/sorn-0.5.1.tar.gz | Bin 27484 -> 0 bytes dist/sorn-0.5.2-py3-none-any.whl | Bin 0 -> 25190 bytes dist/sorn-0.5.2.tar.gz | Bin 0 -> 27428 bytes setup.py | 3 +- sorn.egg-info/PKG-INFO | 3 +- sorn/__init__.py | 2 +- sorn/sorn.py | 54 +++---- 12 files changed, 342 insertions(+), 58 deletions(-) create mode 100644 .ipynb_checkpoints/Untitled-checkpoint.ipynb create mode 100644 Untitled.ipynb delete mode 100644 dist/sorn-0.5.1-py3-none-any.whl delete mode 100644 dist/sorn-0.5.1.tar.gz create mode 100644 dist/sorn-0.5.2-py3-none-any.whl create mode 100644 dist/sorn-0.5.2.tar.gz diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..a9c453c --- /dev/null +++ b/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,142 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sorn import Simulator\n", + "import numpy as np\n", + "\n", + "# Sample input\n", + "num_features = 10\n", + "time_steps = 200\n", + "inputs = np.random.rand(num_features,time_steps)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Network Initialized\n", + "Number of connections in Wee 3894 , Wei 1580, Wie 8000\n", + "Shapes Wee (200, 200) Wei (40, 200) Wie (200, 40)\n" + ] + } + ], + "source": [ + "# To simulate the network;\n", + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=None, noise = True, \n", + " time_steps=time_steps,\n", + " _ne = 200, _nu=num_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=matrices_dict, noise= True, \n", + " time_steps=time_steps,_ne = 200, \n", + " _nu=num_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=matrices_dict, noise= True, \n", + " time_steps=time_steps,_ne = 200, \n", + " _nu=num_features, freeze=['ip'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'dict' object has no attribute 'Wee'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmatrices_dict\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWee\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m: 'dict' object has no attribute 'Wee'" + ] + } + ], + "source": [ + "matrices_dict.Wee" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'MatrixCollection' object has no attribute 'Wee'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 4\u001b[0m matrices_dict, E, I, R, C = Trainer.train_sorn(inputs = inputs, phase='Training', \n\u001b[0;32m 5\u001b[0m \u001b[0mmatrices\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmatrices_dict\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0m_nu\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnum_features\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m time_steps=1)\n\u001b[0m", + "\u001b[1;32mN:\\sorn\\sorn\\sorn.py\u001b[0m in \u001b[0;36mtrain_sorn\u001b[1;34m(self, inputs, phase, matrices, time_steps, noise, freeze, **kwargs)\u001b[0m\n\u001b[0;32m 1135\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1136\u001b[0m Wee, Wei, Wie = (\n\u001b[1;32m-> 1137\u001b[1;33m \u001b[0mmatrix_collection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWee\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1138\u001b[0m \u001b[0mmatrix_collection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWei\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1139\u001b[0m \u001b[0mmatrix_collection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWie\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'MatrixCollection' object has no attribute 'Wee'" + ] + } + ], + "source": [ + "from sorn import Trainer\n", + "inputs = np.random.rand(num_features,1)\n", + "\n", + "matrices_dict, E, I, R, C = Trainer.train_sorn(inputs = inputs, phase='training', \n", + " matrices=matrices_dict,_nu=num_features, \n", + " time_steps=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..f0717fc --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,140 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sorn import Simulator\n", + "import numpy as np\n", + "\n", + "# Sample input\n", + "num_features = 10\n", + "time_steps = 200\n", + "inputs = np.random.rand(num_features,time_steps)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Network Initialized\n", + "Number of connections in Wee 3894 , Wei 1580, Wie 8000\n", + "Shapes Wee (200, 200) Wei (40, 200) Wie (200, 40)\n" + ] + } + ], + "source": [ + "# To simulate the network;\n", + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=None, noise = True, \n", + " time_steps=time_steps,\n", + " _ne = 200, _nu=num_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=matrices_dict, noise= True, \n", + " time_steps=time_steps,_ne = 200, \n", + " _nu=num_features)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from sorn import Trainer\n", + "inputs = np.random.rand(num_features,1)\n", + "\n", + "matrices_dict, E, I, R, C = Trainer.train_sorn(inputs = inputs, phase='training', \n", + " matrices=matrices_dict,_nu=num_features, \n", + " time_steps=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Network Initialized\n", + "Number of connections in Wee 3891 , Wei 1580, Wie 8000\n", + "Shapes Wee (200, 200) Wei (40, 200) Wie (200, 40)\n" + ] + } + ], + "source": [ + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=None, noise = True, time_steps=1, \n", + " _ne = 200, _nu=num_features, \n", + " freeze=['ip'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Network Initialized\n", + "Number of connections in Wee 3900 , Wei 1582, Wie 8000\n", + "Shapes Wee (200, 200) Wei (40, 200) Wie (200, 40)\n" + ] + } + ], + "source": [ + "matrices_dict, E, I, R, C = Simulator.simulate_sorn(inputs = inputs, phase='plasticity', \n", + " matrices=None, noise = True, time_steps=1, \n", + " _ne = 200, _nu=num_features, \n", + " freeze=['ip','sp','ss'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/build/lib/sorn/__init__.py b/build/lib/sorn/__init__.py index 5a225f7..6223714 100644 --- a/build/lib/sorn/__init__.py +++ b/build/lib/sorn/__init__.py @@ -3,6 +3,6 @@ from .utils import * __author__ = "Saranraj Nambusubramaniyan" -__version__ = "0.5.1" +__version__ = "0.5.2" logging.basicConfig(level=logging.INFO) diff --git a/build/lib/sorn/sorn.py b/build/lib/sorn/sorn.py index 67656ca..3d4edf7 100644 --- a/build/lib/sorn/sorn.py +++ b/build/lib/sorn/sorn.py @@ -287,7 +287,8 @@ def ip(self, te: np.array, x: np.array): return te_update - def ss(self, wee: np.array): + @staticmethod + def ss(wee: np.array): """Synaptic Scaling or Synaptic Normalization Args: @@ -853,7 +854,7 @@ def simulate_sorn( Sorn._time_steps = time_steps self.phase = phase self.matrices = matrices - self.freeze = freeze + self.freeze = [] if freeze == None else freeze kwargs_ = [ "_ne", @@ -916,7 +917,6 @@ def simulate_sorn( te_buffer, ti_buffer = np.zeros( (Sorn._ne, 1)), np.zeros((Sorn._ni, 1)) - # Get the matrices and rename them for ease of reading Wee, Wei, Wie = ( matrix_collection.Wee, matrix_collection.Wei, @@ -956,31 +956,31 @@ def simulate_sorn( # STDP if 'stdp' not in self.freeze: - Wee_t = plasticity.stdp( + Wee[i] = plasticity.stdp( Wee[i], x_buffer, cutoff_weights=(0.0, 1.0)) # Intrinsic plasticity if 'ip' not in self.freeze: - Te_t = plasticity.ip(Te[i], x_buffer) + Te[i] = plasticity.ip(Te[i], x_buffer) # Structural plasticity - if 'sp' not in freeze: - Wee_t = plasticity.structural_plasticity(Wee_t) + if 'sp' not in self.freeze: + Wee[i] = plasticity.structural_plasticity(Wee[i]) # iSTDP - if 'istdp' not in freeze: - Wei_t = plasticity.istdp( + if 'istdp' not in self.freeze: + Wei[i] = plasticity.istdp( Wei[i], x_buffer, y_buffer, cutoff_weights=(0.0, 1.0) ) # Synaptic scaling Wee if 'ss' not in self.freeze: - Wee_t = Plasticity().ss(Wee_t) - Wei_t = Plasticity().ss(Wei_t) + Wee[i] = plasticity.ss(Wee[i]) + Wei[i] = plasticity.ss(Wei[i]) # Assign the matrices to the matrix collections - matrix_collection.weight_matrix(Wee_t, Wei_t, Wie[i], i) - matrix_collection.threshold_matrix(Te_t, Ti[i], i) + matrix_collection.weight_matrix(Wee[i], Wei[i], Wie[i], i) + matrix_collection.threshold_matrix(Te[i], Ti[i], i) matrix_collection.network_activity_t(x_buffer, y_buffer, i) X_all[i] = x_buffer[:, 1] @@ -1099,8 +1099,8 @@ def train_sorn( self.time_steps = time_steps Sorn._time_steps = time_steps self.inputs = np.asarray(inputs) - self.freeze = freeze - # Collect the network activity at all time steps + self.freeze = [] if freeze == None else freeze + X_all = [0] * self.time_steps Y_all = [0] * self.time_steps R_all = [0] * self.time_steps @@ -1125,7 +1125,7 @@ def train_sorn( network_state = NetworkState( self.inputs[:, i] - ) # Feed Input as an argument to the class + ) # Buffers to get the resulting x and y vectors at the current time step and update the master matrix x_buffer, y_buffer = np.zeros( @@ -1133,7 +1133,6 @@ def train_sorn( te_buffer, ti_buffer = np.zeros( (Sorn._ne, 1)), np.zeros((Sorn._ni, 1)) - # Get the matrices and rename them for ease of reading Wee, Wei, Wie = ( matrix_collection.Wee, matrix_collection.Wei, @@ -1170,35 +1169,36 @@ def train_sorn( # STDP if 'stdp' not in self.freeze: - Wee_t = plasticity.stdp( + Wee[i] = plasticity.stdp( Wee[i], x_buffer, cutoff_weights=(0.0, 1.0)) # Intrinsic plasticity if 'ip' not in self.freeze: - Te_t = plasticity.ip(Te[i], x_buffer) + Te[i] = plasticity.ip(Te[i], x_buffer) # Structural plasticity if 'sp' not in self.freeze: - Wee_t = plasticity.structural_plasticity(Wee_t) + Wee[i] = plasticity.structural_plasticity(Wee[i]) # iSTDP if 'istdp' not in self.freeze: - Wei_t = plasticity.istdp( + Wei[i] = plasticity.istdp( Wei[i], x_buffer, y_buffer, cutoff_weights=(0.0, 1.0) ) # Synaptic scaling Wee - if 'sc' not in self.freeze: - Wee_t = Plasticity().ss(Wee_t) + if 'ss' not in self.freeze: + Wee[i] = plasticity.ss(Wee[i]) # Synaptic scaling Wei - Wei_t = Plasticity().ss(Wei_t) + Wei[i] = plasticity.ss(Wei[i]) else: - Wee_t, Wei_t, Te_t = Wee[i], Wei[i], Te[i] + # Wee[i], Wei[i], Te[i] remain same + pass # Assign the matrices to the matrix collections - matrix_collection.weight_matrix(Wee_t, Wei_t, Wie[i], i) - matrix_collection.threshold_matrix(Te_t, Ti[i], i) + matrix_collection.weight_matrix(Wee[i], Wei[i], Wie[i], i) + matrix_collection.threshold_matrix(Te[i], Ti[i], i) matrix_collection.network_activity_t(x_buffer, y_buffer, i) X_all[i] = x_buffer[:, 1] diff --git a/dist/sorn-0.5.1-py3-none-any.whl b/dist/sorn-0.5.1-py3-none-any.whl deleted file mode 100644 index 8c6d0910b52cd96b1fd6ff6c4d56794c825827e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25220 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 diff --git a/dist/sorn-0.5.2-py3-none-any.whl b/dist/sorn-0.5.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c0d84a47802a343102994d0f4d617d580bc7ec30 GIT binary patch literal 25190 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 RYn~Y#E4^BhK(xR>{udq2%WVJv literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index c1b3d31..a79960d 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read(fname): setup( name="sorn", - version="0.5.1", + version="0.5.2", author="Saranraj Nambusubramaniyan", author_email="saran_nns@hotmail.com", description="Self-Organizing Recurrent Neural Networks", @@ -31,6 +31,7 @@ def read(fname): "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", ], include_package_data=True, install_requires=["numpy", "configparser", "scipy", "seaborn", "networkx"], diff --git a/sorn.egg-info/PKG-INFO b/sorn.egg-info/PKG-INFO index 0a1d249..4c729bd 100644 --- a/sorn.egg-info/PKG-INFO +++ b/sorn.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: sorn -Version: 0.5.1 +Version: 0.5.2 Summary: Self-Organizing Recurrent Neural Networks Home-page: https://github.com/Saran-nns/sorn Author: Saranraj Nambusubramaniyan @@ -273,4 +273,5 @@ Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 Description-Content-Type: text/markdown diff --git a/sorn/__init__.py b/sorn/__init__.py index 5a225f7..6223714 100644 --- a/sorn/__init__.py +++ b/sorn/__init__.py @@ -3,6 +3,6 @@ from .utils import * __author__ = "Saranraj Nambusubramaniyan" -__version__ = "0.5.1" +__version__ = "0.5.2" logging.basicConfig(level=logging.INFO) diff --git a/sorn/sorn.py b/sorn/sorn.py index 67656ca..3d4edf7 100644 --- a/sorn/sorn.py +++ b/sorn/sorn.py @@ -287,7 +287,8 @@ def ip(self, te: np.array, x: np.array): return te_update - def ss(self, wee: np.array): + @staticmethod + def ss(wee: np.array): """Synaptic Scaling or Synaptic Normalization Args: @@ -853,7 +854,7 @@ def simulate_sorn( Sorn._time_steps = time_steps self.phase = phase self.matrices = matrices - self.freeze = freeze + self.freeze = [] if freeze == None else freeze kwargs_ = [ "_ne", @@ -916,7 +917,6 @@ def simulate_sorn( te_buffer, ti_buffer = np.zeros( (Sorn._ne, 1)), np.zeros((Sorn._ni, 1)) - # Get the matrices and rename them for ease of reading Wee, Wei, Wie = ( matrix_collection.Wee, matrix_collection.Wei, @@ -956,31 +956,31 @@ def simulate_sorn( # STDP if 'stdp' not in self.freeze: - Wee_t = plasticity.stdp( + Wee[i] = plasticity.stdp( Wee[i], x_buffer, cutoff_weights=(0.0, 1.0)) # Intrinsic plasticity if 'ip' not in self.freeze: - Te_t = plasticity.ip(Te[i], x_buffer) + Te[i] = plasticity.ip(Te[i], x_buffer) # Structural plasticity - if 'sp' not in freeze: - Wee_t = plasticity.structural_plasticity(Wee_t) + if 'sp' not in self.freeze: + Wee[i] = plasticity.structural_plasticity(Wee[i]) # iSTDP - if 'istdp' not in freeze: - Wei_t = plasticity.istdp( + if 'istdp' not in self.freeze: + Wei[i] = plasticity.istdp( Wei[i], x_buffer, y_buffer, cutoff_weights=(0.0, 1.0) ) # Synaptic scaling Wee if 'ss' not in self.freeze: - Wee_t = Plasticity().ss(Wee_t) - Wei_t = Plasticity().ss(Wei_t) + Wee[i] = plasticity.ss(Wee[i]) + Wei[i] = plasticity.ss(Wei[i]) # Assign the matrices to the matrix collections - matrix_collection.weight_matrix(Wee_t, Wei_t, Wie[i], i) - matrix_collection.threshold_matrix(Te_t, Ti[i], i) + matrix_collection.weight_matrix(Wee[i], Wei[i], Wie[i], i) + matrix_collection.threshold_matrix(Te[i], Ti[i], i) matrix_collection.network_activity_t(x_buffer, y_buffer, i) X_all[i] = x_buffer[:, 1] @@ -1099,8 +1099,8 @@ def train_sorn( self.time_steps = time_steps Sorn._time_steps = time_steps self.inputs = np.asarray(inputs) - self.freeze = freeze - # Collect the network activity at all time steps + self.freeze = [] if freeze == None else freeze + X_all = [0] * self.time_steps Y_all = [0] * self.time_steps R_all = [0] * self.time_steps @@ -1125,7 +1125,7 @@ def train_sorn( network_state = NetworkState( self.inputs[:, i] - ) # Feed Input as an argument to the class + ) # Buffers to get the resulting x and y vectors at the current time step and update the master matrix x_buffer, y_buffer = np.zeros( @@ -1133,7 +1133,6 @@ def train_sorn( te_buffer, ti_buffer = np.zeros( (Sorn._ne, 1)), np.zeros((Sorn._ni, 1)) - # Get the matrices and rename them for ease of reading Wee, Wei, Wie = ( matrix_collection.Wee, matrix_collection.Wei, @@ -1170,35 +1169,36 @@ def train_sorn( # STDP if 'stdp' not in self.freeze: - Wee_t = plasticity.stdp( + Wee[i] = plasticity.stdp( Wee[i], x_buffer, cutoff_weights=(0.0, 1.0)) # Intrinsic plasticity if 'ip' not in self.freeze: - Te_t = plasticity.ip(Te[i], x_buffer) + Te[i] = plasticity.ip(Te[i], x_buffer) # Structural plasticity if 'sp' not in self.freeze: - Wee_t = plasticity.structural_plasticity(Wee_t) + Wee[i] = plasticity.structural_plasticity(Wee[i]) # iSTDP if 'istdp' not in self.freeze: - Wei_t = plasticity.istdp( + Wei[i] = plasticity.istdp( Wei[i], x_buffer, y_buffer, cutoff_weights=(0.0, 1.0) ) # Synaptic scaling Wee - if 'sc' not in self.freeze: - Wee_t = Plasticity().ss(Wee_t) + if 'ss' not in self.freeze: + Wee[i] = plasticity.ss(Wee[i]) # Synaptic scaling Wei - Wei_t = Plasticity().ss(Wei_t) + Wei[i] = plasticity.ss(Wei[i]) else: - Wee_t, Wei_t, Te_t = Wee[i], Wei[i], Te[i] + # Wee[i], Wei[i], Te[i] remain same + pass # Assign the matrices to the matrix collections - matrix_collection.weight_matrix(Wee_t, Wei_t, Wie[i], i) - matrix_collection.threshold_matrix(Te_t, Ti[i], i) + matrix_collection.weight_matrix(Wee[i], Wei[i], Wie[i], i) + matrix_collection.threshold_matrix(Te[i], Ti[i], i) matrix_collection.network_activity_t(x_buffer, y_buffer, i) X_all[i] = x_buffer[:, 1] From 27e1e12ed9a2444166640751140d416864e71f22 Mon Sep 17 00:00:00 2001 From: saran_nns Date: Fri, 6 Aug 2021 19:37:40 +0200 Subject: [PATCH 2/2] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4203b96..f20dd58 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ from sorn import Trainer inputs = np.random.rand(num_features,1) # SORN network is frozen during training phase -matrices_dict, Exc_activity, Inh_activity, Rec_activity, num_active_connections = Trainer.train_sorn(inputs = inputs, phase='Training', matrices=matrices_dict,_nu=num_features, time_steps=1) +matrices_dict, Exc_activity, Inh_activity, Rec_activity, num_active_connections = Trainer.train_sorn(inputs = inputs, phase='training', matrices=matrices_dict,_nu=num_features, time_steps=1) ``` To turn off any plasticity mechanisms during simulation or training phase, you can use `freeze` argument.