コード例 #1
0
  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])
コード例 #2
0
    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])