def testUpdatePermanencesForColumn(self): sp = SpatialPooler(inputDimensions = [5], columnDimensions = [5]) sp.setSynPermTrimThreshold(0.05) permanencesList = [ [ -0.10, 0.500, 0.400, 0.010, 0.020 ], [ 0.300, 0.010, 0.020, 0.120, 0.090 ], [ 0.070, 0.050, 1.030, 0.190, 0.060 ], [ 0.180, 0.090, 0.110, 0.010, 0.030 ], [ 0.200, 0.101, 0.050, -0.09, 1.100 ]] expectedPermanencesList = [ [ 0.000, 0.500, 0.400, 0.000, 0.000], # Clip - - Trim Trim [0.300, 0.000, 0.000, 0.120, 0.090], # - Trim Trim - - [0.070, 0.050, 1.000, 0.190, 0.060], # - - Clip - - [0.180, 0.090, 0.110, 0.000, 0.000], # - - - Trim Trim [0.200, 0.101, 0.050, 0.000, 1.000]] # - - - Clip Clip expectedConnectedSynapsesList = [ [0, 1, 1, 0, 0], [1, 0, 0, 1, 0], [0, 0, 1, 1, 0], [1, 0, 1, 0, 0], [1, 1, 0, 0, 1]] expectedConnectedCounts = [2, 2, 2, 2, 3] for i in xrange(5): permanences = np.array(permanencesList[i], dtype=realDType) expectedPermanences = np.array(expectedPermanencesList[i], dtype=realDType) expectedConnectedSynapses = expectedConnectedSynapsesList[i] sp._updatePermanencesForColumn(permanences, i, False) updatedPermanences = np.zeros(5, dtype=realDType) connectedSynapses = np.zeros(5, dtype=uintDType) connectedCounts = np.zeros(5, dtype=uintDType) sp.getPermanence(i, updatedPermanences) sp.getConnectedSynapses(i, connectedSynapses) sp.getConnectedCounts(connectedCounts) np.testing.assert_almost_equal(updatedPermanences, expectedPermanences) self.assertEqual(list(connectedSynapses), expectedConnectedSynapses) self.assertEqual(connectedCounts[i], expectedConnectedCounts[i])
def testUpdatePermanencesForColumn(self): sp = SpatialPooler(inputDimensions=[5], columnDimensions=[5]) sp.setSynPermTrimThreshold(0.05) permanencesList = [[-0.10, 0.500, 0.400, 0.010, 0.020], [0.300, 0.010, 0.020, 0.120, 0.090], [0.070, 0.050, 1.030, 0.190, 0.060], [0.180, 0.090, 0.110, 0.010, 0.030], [0.200, 0.101, 0.050, -0.09, 1.100]] expectedPermanencesList = [ [0.000, 0.500, 0.400, 0.000, 0.000], # Clip - - Trim Trim [0.300, 0.000, 0.000, 0.120, 0.090], # - Trim Trim - - [0.070, 0.050, 1.000, 0.190, 0.060], # - - Clip - - [0.180, 0.090, 0.110, 0.000, 0.000], # - - - Trim Trim [0.200, 0.101, 0.050, 0.000, 1.000] ] # - - - Clip Clip expectedConnectedSynapsesList = [[0, 1, 1, 0, 0], [1, 0, 0, 1, 0], [0, 0, 1, 1, 0], [1, 0, 1, 0, 0], [1, 1, 0, 0, 1]] expectedConnectedCounts = [2, 2, 2, 2, 3] for i in xrange(5): permanences = np.array(permanencesList[i], dtype=realDType) expectedPermanences = np.array(expectedPermanencesList[i], dtype=realDType) expectedConnectedSynapses = expectedConnectedSynapsesList[i] sp._updatePermanencesForColumn(permanences, i, False) updatedPermanences = np.zeros(5, dtype=realDType) connectedSynapses = np.zeros(5, dtype=uintDType) connectedCounts = np.zeros(5, dtype=uintDType) sp.getPermanence(i, updatedPermanences) sp.getConnectedSynapses(i, connectedSynapses) sp.getConnectedCounts(connectedCounts) np.testing.assert_almost_equal(updatedPermanences, expectedPermanences) self.assertEqual(list(connectedSynapses), expectedConnectedSynapses) self.assertEqual(connectedCounts[i], expectedConnectedCounts[i])