numenta / nupic-legacy

Numenta Platform for Intelligent Computing is an implementation of Hierarchical Temporal Memory (HTM), a theory of intelligence based strictly on the neuroscience of the neocortex.
http://numenta.org/
GNU Affero General Public License v3.0
6.34k stars 1.56k forks source link

Is this expected test result after running py.test tests/unit ? #3251

Open aronayne opened 8 years ago

aronayne commented 8 years ago

I installed nupic as per https://github.com/numenta/nupic/wiki/Running-NuPIC-on-Windows

after running py.test tests/unit here are results :

========= 50 failed, 773 passed, 56 skipped, 3 error in 83.10 seconds =========

Is this expected or should all tests pass ?

rcrowder commented 8 years ago

No, that isn't expected. The current Windows (64 bit) release version of NuPIC has "839 passed, 53 skipped" [1], and the latest development master has "846 passed, 57 skipped" [2].

Can you say which tests are failing for you?

1 https://ci.appveyor.com/project/numenta-ci/nupic/build/0.1.0.1544#L1035 2 https://ci.appveyor.com/project/numenta-ci/nupic/build/0.1.0.1695#L1048

aronayne commented 8 years ago

2 of the failing tests are attached below. 'TypeError' is being thrown, maybe I'm messing a package or did not install something , will review my install steps.

self = <nupic.research.temporal_memory.TemporalMemory object at 0x000000000766BD30> activeColumns = [0], learn = True

def compute(self, activeColumns, learn=True):
  """
    Feeds input record through TM, performing inference and learning.

    @param activeColumns (set)  Indices of active columns
    @param learn         (bool) Whether or not learning is enabled

    Updates member variables:
      - `activeCells`     (set)
      - `winnerCells`     (set)
      - `activeSegments`  (set)
      - `predictiveCells` (set)
      - `matchingSegments`(set)
      - `matchingCells`   (set)
    """
  prevPredictiveCells = self.predictiveCells
  prevActiveSegments = self.activeSegments
  prevActiveCells = self.activeCells
  prevWinnerCells = self.winnerCells
  prevMatchingSegments = self.matchingSegments
  prevMatchingCells = self.matchingCells

  activeCells = set()
  winnerCells = set()

  (_activeCells,
   _winnerCells,
   predictedActiveColumns,
   predictedInactiveCells) = self.activateCorrectlyPredictiveCells(
     prevPredictiveCells,
     prevMatchingCells,
     activeColumns)

  activeCells.update(_activeCells)
  winnerCells.update(_winnerCells)

  (_activeCells,
   _winnerCells,
   learningSegments) = self.burstColumns(activeColumns,
                                         predictedActiveColumns,
                                         prevActiveCells,
                                         prevWinnerCells,
                                       self.connections)

....\anaconda2\lib\site-packages\nupic\research\temporal_memory.py:157:


self = <nupic.research.temporal_memory.TemporalMemory object at 0x000000000766BD30> activeColumns = [0], predictedActiveColumns = set([]), prevActiveCells = set([]) prevWinnerCells = set([]) connections = <nupic.research.connections.Connections object at 0x000000000766BD68>

def burstColumns(self,
                 activeColumns,
                 predictedActiveColumns,
                 prevActiveCells,
                 prevWinnerCells,
                 connections):
  """
    Phase 2: Burst unpredicted columns.

    Pseudocode:

      - for each unpredicted active column
        - mark all cells as active
        - mark the best matching cell as winner cell
          - (learning)
            - if it has no matching segment
              - (optimization) if there are prev winner cells
                - add a segment to it
            - mark the segment as learning

    @param activeColumns                   (set)         Indices of active columns in `t`
    @param predictedActiveColumns          (set)         Indices of predicted => active columns in `t`
    @param prevActiveCells                 (set)         Indices of active cells in `t-1`
    @param prevWinnerCells                 (set)         Indices of winner cells in `t-1`
    @param connections                     (Connections) Connectivity of layer

    @return (tuple) Contains:
                      `activeCells`      (set),
                      `winnerCells`      (set),
                      `learningSegments` (set)
    """
  activeCells = set()
  winnerCells = set()
  learningSegments = set()
unpredictedActiveColumns = activeColumns - predictedActiveColumns

E TypeError: unsupported operand type(s) for -: 'list' and 'set'

....\anaconda2\lib\site-packages\nupic\research\temporal_memory.py:286: TypeError