Esempio n. 1
0
    def __init__(
            self,
            columnCount,  # Number of columns in the SP, a required parameter
            inputWidth,  # Size of inputs to the SP, a required parameter
            **kwargs):

        if columnCount <= 0 or inputWidth <= 0:
            raise TypeError(
                "Parameters columnCount and inputWidth must be > 0")

        # Pull out the spatial arguments automatically
        # These calls whittle down kwargs and create instance variables of SPRegion
        sArgTuples = _buildArgs(FDRCSpatial2.FDRCSpatial2.__init__, self,
                                kwargs)

        # Make a list of automatic spatial arg names for later use
        self._spatialArgNames = [t[0] for t in sArgTuples]

        # Learning and SP parameters.
        # By default we start out in stage learn with inference disabled
        self.learningMode = True
        self.inferenceMode = False
        self.anomalyMode = False
        self.topDownMode = False
        self.columnCount = columnCount
        self.inputWidth = inputWidth

        PyRegion.__init__(self, **kwargs)

        # Initialize all non-persistent base members, as well as give
        # derived class an opportunity to do the same.
        self._loaded = False
        self._initializeEphemeralMembers()

        # Debugging support, used in _conditionalBreak
        self.breakPdb = False
        self.breakKomodo = False

        # Defaults for all other parameters
        self.logPathInput = ''
        self.logPathOutput = ''
        self.logPathOutputDense = ''
        self._fpLogSPInput = None
        self._fpLogSP = None
        self._fpLogSPDense = None

        #
        # Variables set up in initInNetwork()
        #

        # FDRCSpatial instance
        self._sfdr = None

        # Spatial pooler's bottom-up output value: hang on to this  output for
        # top-down inference and for debugging
        self._spatialPoolerOutput = None

        # Spatial pooler's bottom-up input: hang on to this for supporting the
        # spInputNonZeros parameter
        self._spatialPoolerInput = None
Esempio n. 2
0
  def __init__(self,
               columnCount,   # Number of columns in the SP, a required parameter
               inputWidth,    # Size of inputs to the SP, a required parameter
               spatialImp=getDefaultSPImp(),   #'py', 'cpp'
               **kwargs):

    if columnCount <= 0 or inputWidth <=0:
      raise TypeError("Parameters columnCount and inputWidth must be > 0")

    # Pull out the spatial arguments automatically
    # These calls whittle down kwargs and create instance variables of SPRegion
    self.SpatialClass = getSPClass(spatialImp)
    sArgTuples = _buildArgs(self.SpatialClass.__init__, self, kwargs)

    # Make a list of automatic spatial arg names for later use
    self._spatialArgNames = [t[0] for t in sArgTuples]

    # Learning and SP parameters.
    # By default we start out in stage learn with inference disabled
    self.learningMode   = True
    self.inferenceMode  = False
    self.anomalyMode    = False
    self.topDownMode    = False
    self.columnCount    = columnCount
    self.inputWidth     = inputWidth

    PyRegion.__init__(self, **kwargs)

    # Initialize all non-persistent base members, as well as give
    # derived class an opportunity to do the same.
    self._loaded = False
    self._initializeEphemeralMembers()

    # Debugging support, used in _conditionalBreak
    self.breakPdb = False
    self.breakKomodo = False

    # Defaults for all other parameters
    self.logPathInput = ''
    self.logPathOutput = ''
    self.logPathOutputDense = ''
    self._fpLogSPInput = None
    self._fpLogSP = None
    self._fpLogSPDense = None


    #
    # Variables set up in initInNetwork()
    #

    # Spatial instance
    self._sfdr                = None

    # Spatial pooler's bottom-up output value: hang on to this  output for
    # top-down inference and for debugging
    self._spatialPoolerOutput = None

    # Spatial pooler's bottom-up input: hang on to this for supporting the
    # spInputNonZeros parameter
    self._spatialPoolerInput  = None
Esempio n. 3
0
  def __init__(self,

               columnCount,   # Number of columns in the SP, a required parameter
               inputWidth,    # Size of inputs to the SP, a required parameter
               cellsPerColumn, # Number of cells per column, required

               # Constructor arguments are picked up automatically. There is no
               # need to add them anywhere in TPRegion, unless you need to do
               # something special with them. See docstring above.

               orColumnOutputs=False,
               cellsSavePath='',
               temporalImp=gDefaultTemporalImp,
               anomalyMode=False,

               **kwargs):

    # Which Temporal implementation?
    FDRTemporalClass = _getTPClass(temporalImp)

    # Make a list of automatic temporal arg names for later use
    # Pull out the temporal arguments automatically
    # These calls whittle down kwargs and create instance variables of TPRegion
    tArgTuples = _buildArgs(FDRTemporalClass.__init__, self, kwargs)

    self._temporalArgNames = [t[0] for t in tArgTuples]

    self.learningMode   = True      # Start out with learning enabled
    self.inferenceMode  = False
    self.anomalyMode    = anomalyMode
    self.topDownMode    = False
    self.columnCount    = columnCount
    self.inputWidth     = inputWidth
    self.outputWidth    = columnCount * cellsPerColumn
    self.cellsPerColumn = cellsPerColumn

    PyRegion.__init__(self, **kwargs)

    # Initialize all non-persistent base members, as well as give
    # derived class an opportunity to do the same.
    self._loaded = False
    self._initialize()

    # Debugging support, used in _conditionalBreak
    self.breakPdb = False
    self.breakKomodo = False

    # TPRegion only, or special handling
    self.orColumnOutputs = orColumnOutputs
    self.temporalImp = temporalImp

    # Various file names
    self.storeDenseOutput = False
    self.logPathOutput = ''
    self.cellsSavePath = cellsSavePath
    self._fpLogTPOutput = None

    # Variables set up in initInNetwork()
    self._tfdr                = None  # FDRTemporal instance
Esempio n. 4
0
    def __init__(
            self,
            columnCount,  # Number of columns in the SP, a required parameter
            inputWidth,  # Size of inputs to the SP, a required parameter
            cellsPerColumn,  # Number of cells per column, required

            # Constructor arguments are picked up automatically. There is no
            # need to add them anywhere in TPRegion, unless you need to do
            # something special with them. See docstring above.
        orColumnOutputs=False,
            cellsSavePath='',
            temporalImp=gDefaultTemporalImp,
            anomalyMode=False,
            computePredictedActiveCellIndices=False,
            **kwargs):

        # Which Temporal implementation?
        TemporalClass = _getTPClass(temporalImp)

        # Make a list of automatic temporal arg names for later use
        # Pull out the temporal arguments automatically
        # These calls whittle down kwargs and create instance variables of TPRegion
        tArgTuples = _buildArgs(TemporalClass.__init__, self, kwargs)

        self._temporalArgNames = [t[0] for t in tArgTuples]

        self.learningMode = True  # Start out with learning enabled
        self.inferenceMode = False
        self.anomalyMode = anomalyMode
        self.computePredictedActiveCellIndices = computePredictedActiveCellIndices
        self.topDownMode = False
        self.columnCount = columnCount
        self.inputWidth = inputWidth
        self.outputWidth = columnCount * cellsPerColumn
        self.cellsPerColumn = cellsPerColumn

        PyRegion.__init__(self, **kwargs)

        # Initialize all non-persistent base members, as well as give
        # derived class an opportunity to do the same.
        self._loaded = False
        self._initialize()

        # Debugging support, used in _conditionalBreak
        self.breakPdb = False
        self.breakKomodo = False

        # TPRegion only, or special handling
        self.orColumnOutputs = orColumnOutputs
        self.temporalImp = temporalImp

        # Various file names
        self.storeDenseOutput = False
        self.logPathOutput = ''
        self.cellsSavePath = cellsSavePath
        self._fpLogTPOutput = None

        # Variables set up in initInNetwork()
        self._tfdr = None  # FDRTemporal instance
Esempio n. 5
0
  def __init__(self,

               # Constructor arguments for FDRSpatial and FDRTemporal are
               # picked up automatically. There is no need to add them anywhere
               # in CLARegion, unless you need to do something special with them.
               # See docstring above.

               # These args are used by CLARegion only or need special handling
               disableSpatial=False,
               disableTemporal=False,
               orColumnOutputs=False,
               nCellsPerCol=1,
               trainingStep = 'temporal',
               cellsSavePath='',
               statelessMode=False,
               storeDenseOutput=False, #DEPRECATED
               outputCloningWidth=0,
               outputCloningHeight=0,
               saveMasterCoincImages = 0,
               temporalImp='py', #'py', 'simple' or 'cpp'
               spatialImp=getDefaultSPImp(),   #'py', 'cpp', or 'oldpy'
               computeTopDown = 0,
               nMultiStepPrediction = 0,

               # We have separate seeds for spatial and temporal
               spSeed=-1,
               tpSeed=-1,

               # Needed for vision framework
               bottomUpOut=None,
               **kwargs):

    #if disableSpatial and disableTemporal:
    #  raise RuntimeError("Disable both the spatial and temporal components? "
    #                     "That would make it too easy.")

    # Make sure our tuple arguments are integers
    for name in ['coincidencesShape', 'inputShape']:
      if name in kwargs:
        (height, width) = kwargs[name]
        kwargs[name] = (int(height), int(width))

    # Which FDR Temporal implementation?
    FDRCSpatialClass = getSPClass(spatialImp)
    FDRTemporalClass = _getTPClass(temporalImp)

    # Pull out the spatial and temporal arguments automatically
    # These calls whittle down kwargs and create instance variables of CLARegion
    sArgTuples = _buildArgs(FDRCSpatialClass.__init__, self, kwargs)
    tArgTuples = _buildArgs(FDRTemporalClass.__init__, self, kwargs)

    # Make a list of automatic spatial and temporal arg names for later use
    self._spatialArgNames = [t[0] for t in sArgTuples]
    self._temporalArgNames = [t[0] for t in tArgTuples]

    # Start out in stage learn
    self.learningMode = True
    self.inferenceMode = False

    PyRegion.__init__(self, **kwargs)

    # Initialize all non-persistent base members, as well as give
    # derived class an opportunity to do the same.
    self._loaded = False
    self._initialize()

    # Debugging support, used in _conditionalBreak
    self.breakPdb = False
    self.breakKomodo = False

    # CLARegion only, or special handling
    self.disableSpatial = disableSpatial
    self.saveMasterCoincImages = saveMasterCoincImages
    self.disableTemporal = disableTemporal
    self.orColumnOutputs = orColumnOutputs
    self.nCellsPerCol = nCellsPerCol  # Modified in initInNetwork
    self.coincidenceCount = self.coincidencesShape[0] * self.coincidencesShape[1]
    self.temporalImp = temporalImp
    self.spatialImp = spatialImp
    self.computeTopDown = computeTopDown
    self.nMultiStepPrediction = nMultiStepPrediction

    # Handle -1 for cloning sizes, which essentially just means no cloning...
    # ...also handle 0, since that's the new default...
    if outputCloningWidth in (0, -1):
      outputCloningWidth = self.coincidencesShape[1]
    if outputCloningHeight in (0, -1):
      outputCloningHeight = self.coincidencesShape[0]

    self.outputCloningWidth = outputCloningWidth
    self.outputCloningHeight = outputCloningHeight

    # Make the clone map, which is used by both spatial and temporal components.
    self._cloneMap, self._numCloneMasters = self.makeCloneMap(
      self.coincidencesShape, outputCloningWidth, outputCloningHeight
    )

    # Both FDRCSpatial and FDRTemporal
    self.tpSeed = tpSeed
    self.spSeed = spSeed
    self.trainingStep = trainingStep
    self.logPathSPInput = ''
    self.logPathSP = ''
    self.logPathSPDense = ''
    self.logPathTP = ''
    # Used to save TP cells data structure to auxiliary file
    self.cellsSavePath = cellsSavePath
    # Instructs node to ignore past temporal state when operating in
    # inference mode; i.e., tells node to ignore the actual resetSignal
    # input and treat it as if the resetSignal was *always* set (in
    # inference mode only)
    self.statelessMode = statelessMode
    self._hasRunInference = False

    # Variables set up in initInNetwork()
    self._sfdr                = None  # FDRCSpatial instance
    self._tfdr                = None  # FDRTemporal instance
    self._numOutputs          = None  # Number of outputs allocated per node
    self._spatialPoolerOutput = None  # Hang on to this output for debugging
    self._tpSeqOutput         = None  # Hang on to this for supporting the
                                      #  tpSeqOutputNonZeros parameter
    self._spatialPoolerInput  = None  # Hang on to this for supporting the
                                      #  spInputNonZeros parameter
    self._rfOutput            = None  # Hang on to this for supporting the
                                      #  tpOutputNonZeros parameter

    # Read-only node parameters
    self.activeOutputCount        = None
    self.cppOutput                = None
    self.file = None

    # For inspector usage
    #from dbgp.client import brk; brk(port=9019)
    self._spatialSpec, self._temporalSpec, self._otherSpec = \
                    _getAdditionalSpecs(spatialImp=self.spatialImp, temporalImp=self.temporalImp)