コード例 #1
0
ファイル: sdr_category.py プロジェクト: pastorenick/nupic
 def _seed(self, seed=-1):
   """
   Initialize the random seed
   """
   if seed != -1:
     self.random = NupicRandom(seed)
   else:
     self.random = NupicRandom()
コード例 #2
0
    def read(cls, proto):
        encoder = object.__new__(cls)
        encoder.resolution = proto.resolution
        encoder.w = proto.w
        encoder.n = proto.n
        encoder.name = proto.name
        if proto.offset.which() == "none":
            encoder._offset = None
        else:
            encoder._offset = proto.offset.value
        encoder.random = NupicRandom()
        encoder.random.read(proto.random)
        encoder.resolution = proto.resolution
        encoder.verbosity = proto.verbosity
        encoder.minIndex = proto.minIndex
        encoder.maxIndex = proto.maxIndex
        encoder.encoders = None
        encoder._maxBuckets = INITIAL_BUCKETS
        encoder._maxOverlap = proto.maxOverlap or 0
        encoder.numTries = proto.numTries or 0
        encoder.bucketMap = {
            x.key: numpy.array(x.value, dtype=numpy.uint32)
            for x in proto.bucketMap
        }

        return encoder
コード例 #3
0
    def read(cls, proto):
        encoder = object.__new__(cls)

        encoder.n = proto.n
        encoder.w = proto.w
        encoder.random = NupicRandom()
        encoder.random.read(proto.random)
        encoder.verbosity = proto.verbosity
        encoder.name = proto.name
        encoder.description = [(proto.name, 0)]
        encoder.categories = list(proto.categories)
        encoder.sdrs = numpy.array(proto.sdrs, dtype=numpy.uint8)

        encoder.categoryToIndex = {
            category: index
            for index, category in enumerate(encoder.categories)
        }
        encoder.ncategories = len(encoder.categories)
        encoder._learningEnabled = proto.learningEnabled
        encoder._initOverlap()
        encoder._topDownMappingM = None
        encoder._topDownValues = None
        encoder.encoders = None

        return encoder
コード例 #4
0
ファイル: sdr_category.py プロジェクト: pastorenick/nupic
  def __setstate__(self, state):
    self.__dict__.update(state)

    # Initialize self.random as an instance of NupicRandom derived from the
    # previous numpy random state
    randomState = state["random"]
    if isinstance(randomState, numpy.random.mtrand.RandomState):
      self.random = NupicRandom(randomState.randint(sys.maxsize))
コード例 #5
0
    def read(cls, proto):
        encoder = object.__new__(cls)
        encoder.w = proto.w
        encoder.n = proto.n
        encoder.name = proto.name
        encoder.random = NupicRandom()
        encoder.random.read(proto.random)
        encoder.verbosity = proto.verbosity
        encoder.encoders = None
        encoder.bucketMap = {
            x.key: numpy.array(x.value, dtype=numpy.uint32)
            for x in proto.bucketMap
        }

        return encoder
コード例 #6
0
    def convertSP(self, pySp, newSeed):
        columnDim = pySp._columnDimensions
        inputDim = pySp._inputDimensions
        numInputs = pySp.getNumInputs()
        numColumns = pySp.getNumColumns()
        cppSp = CPPSpatialPooler(inputDim, columnDim)
        cppSp.setPotentialRadius(pySp.getPotentialRadius())
        cppSp.setPotentialPct(pySp.getPotentialPct())
        cppSp.setGlobalInhibition(pySp.getGlobalInhibition())

        numActiveColumnsPerInhArea = pySp.getNumActiveColumnsPerInhArea()
        localAreaDensity = pySp.getLocalAreaDensity()
        if (numActiveColumnsPerInhArea > 0):
            cppSp.setNumActiveColumnsPerInhArea(numActiveColumnsPerInhArea)
        else:
            cppSp.setLocalAreaDensity(localAreaDensity)

        cppSp.setStimulusThreshold(pySp.getStimulusThreshold())
        cppSp.setInhibitionRadius(pySp.getInhibitionRadius())
        cppSp.setDutyCyclePeriod(pySp.getDutyCyclePeriod())
        cppSp.setMaxBoost(pySp.getMaxBoost())
        cppSp.setIterationNum(pySp.getIterationNum())
        cppSp.setIterationLearnNum(pySp.getIterationLearnNum())
        cppSp.setSpVerbosity(pySp.getSpVerbosity())
        cppSp.setUpdatePeriod(pySp.getUpdatePeriod())
        cppSp.setSynPermTrimThreshold(pySp.getSynPermTrimThreshold())
        cppSp.setSynPermActiveInc(pySp.getSynPermActiveInc())
        cppSp.setSynPermInactiveDec(pySp.getSynPermInactiveDec())
        cppSp.setSynPermBelowStimulusInc(pySp.getSynPermBelowStimulusInc())
        cppSp.setSynPermConnected(pySp.getSynPermConnected())
        cppSp.setMinPctOverlapDutyCycles(pySp.getMinPctOverlapDutyCycles())
        cppSp.setMinPctActiveDutyCycles(pySp.getMinPctActiveDutyCycles())

        boostFactors = numpy.zeros(numColumns).astype(realType)
        pySp.getBoostFactors(boostFactors)
        cppSp.setBoostFactors(boostFactors)

        overlapDuty = numpy.zeros(numColumns).astype(realType)
        pySp.getOverlapDutyCycles(overlapDuty)
        cppSp.setOverlapDutyCycles(overlapDuty)

        activeDuty = numpy.zeros(numColumns).astype(realType)
        pySp.getActiveDutyCycles(activeDuty)
        cppSp.setActiveDutyCycles(activeDuty)

        minOverlapDuty = numpy.zeros(numColumns).astype(realType)
        pySp.getMinOverlapDutyCycles(minOverlapDuty)
        cppSp.setMinOverlapDutyCycles(minOverlapDuty)

        minActiveDuty = numpy.zeros(numColumns).astype(realType)
        pySp.getMinActiveDutyCycles(minActiveDuty)
        cppSp.setMinActiveDutyCycles(minActiveDuty)

        for i in xrange(numColumns):
            potential = numpy.zeros(numInputs).astype(uintType)
            pySp.getPotential(i, potential)
            cppSp.setPotential(i, potential)

            perm = numpy.zeros(numInputs).astype(realType)
            pySp.getPermanence(i, perm)
            cppSp.setPermanence(i, perm)

        pySp._random = NupicRandom(newSeed)
        cppSp.seed_(newSeed)
        return cppSp
コード例 #7
0
  def read(cls, proto):
    """
    Override the Spatial pooler deserialization for union pooler.
    """

    instance = cls.__new__(cls)
    # Spatial Pooler (copied)
    VERSION = 3
    EPSILON_ROUND = 5

    instance._random = NupicRandom()
    instance._random.read(proto.random)
    instance._numInputs = proto.numInputs
    instance._numColumns = proto.numColumns
    instance._columnDimensions = numpy.array(proto.columnDimensions)
    instance._inputDimensions = numpy.array(proto.inputDimensions)
    instance._potentialRadius = proto.potentialRadius
    instance._potentialPct = round(proto.potentialPct,
                                   EPSILON_ROUND)
    instance._inhibitionRadius = proto.inhibitionRadius
    instance._globalInhibition = proto.globalInhibition
    instance._numActiveColumnsPerInhArea = proto.numActiveColumnsPerInhArea
    instance._localAreaDensity = proto.localAreaDensity
    instance._stimulusThreshold = proto.stimulusThreshold
    instance._synPermInactiveDec = round(proto.synPermInactiveDec,
                                         EPSILON_ROUND)
    instance._synPermActiveInc = round(proto.synPermActiveInc, EPSILON_ROUND)
    instance._synPermBelowStimulusInc = round(proto.synPermBelowStimulusInc,
                                              EPSILON_ROUND)
    instance._synPermConnected = round(proto.synPermConnected,
                                       EPSILON_ROUND)
    instance._minPctOverlapDutyCycles = round(proto.minPctOverlapDutyCycles,
                                              EPSILON_ROUND)
    instance._dutyCyclePeriod = proto.dutyCyclePeriod
    instance._boostStrength = proto.boostStrength
    instance._wrapAround = proto.wrapAround
    instance._spVerbosity = proto.spVerbosity

    instance._synPermMin = proto.synPermMin
    instance._synPermMax = proto.synPermMax
    instance._synPermTrimThreshold = round(proto.synPermTrimThreshold,
                                           EPSILON_ROUND)

    # TODO: These two overlaps attributes aren't currently saved.
    instance._overlaps = numpy.zeros(numColumns, dtype=realDType)
    instance._boostedOverlaps = numpy.zeros(numColumns, dtype=realDType)

    instance._updatePeriod = proto.updatePeriod

    instance._version = VERSION
    instance._iterationNum = proto.iterationNum
    instance._iterationLearnNum = proto.iterationLearnNum

    instance._potentialPools = BinaryCorticalColumns(numInputs)
    instance._potentialPools.resize(numColumns, numInputs)
    instance._potentialPools.read(proto.potentialPools)

    instance._permanences = CorticalColumns(numColumns, numInputs)
    instance._permanences.read(proto.permanences)
    # Initialize ephemerals and make sure they get updated
    instance._connectedCounts = numpy.zeros(numColumns, dtype=realDType)
    instance._connectedSynapses = BinaryCorticalColumns(numInputs)
    instance._connectedSynapses.resize(numColumns, numInputs)
    for columnIndex in xrange(proto.numColumns):
      instance._updatePermanencesForColumn(
        instance._permanences[columnIndex], columnIndex, False
      )

    instance._tieBreaker = numpy.array(proto.tieBreaker, dtype=realDType)

    instance._overlapDutyCycles = numpy.array(proto.overlapDutyCycles,
                                          dtype=realDType)
    instance._activeDutyCycles = numpy.array(proto.activeDutyCycles,
                                         dtype=realDType)
    instance._minOverlapDutyCycles = numpy.array(proto.minOverlapDutyCycles,
                                             dtype=realDType)
    instance._boostFactors = numpy.array(proto.boostFactors, dtype=realDType)


    # Union Temporal Pooler
    instance._activeOverlapWeight = proto.activeOverlapWeight
    instance._predictedActiveOverlapWeight = proto.predictedActiveOverlapWeight
    instance._maxUnionActivity = proto.maxUnionActivity
    instance._synPermPredActiveInc = proto.synPermPredActiveInc
    instance._synPermPreviousPredActiveInc = proto.synPermPreviousPredActiveInc

    instance._historyLength = proto.historyLength
    instance._minHistory = proto.minHistory

    instance._decayFunctionType = proto.exciteFunctionType
    instance._decayFunctionType = proto.decayFunctionType
    instance._decayTimeConst = proto.decayTimeConst
    instance._decayLinearConst = proto.decayLinearConst
    instance._initFunctions();

    instance._maxUnionCells = proto.maxUnionCells

    instance._poolingActivation = numpy.array(proto.poolingActivation, dtype=REAL_DTYPE)
    instance._poolingActivation_tieBreaker = numpy.array(proto.poolingActivationTieBreaker, dtype=REAL_DTYPE)

    instance._poolingTimer = numpy.array(proto.poolingTimer, dtype=REAL_DTYPE)
    instance._poolingActivationInitLevel = numpy.array(proto.poolingActivationInitLevel, dtype=REAL_DTYPE)
    instance._poolingActivationlowerBound = proto.poolingActivationLowerBound

    instance._unionSDR = numpy.array(proto.unionSDR, dtype='uint32')
    instance._activeCells = numpy.array(proto.activeCells, dtype='uint32')

    instance._preActiveInput = numpy.array(proto.preActiveInput, dtype=REAL_DTYPE)

    # load matrix
    instance._prePredictedActiveInput = [[] for _ in xrange(len(proto.prePredictedActiveInput))]
    for row, rowProto in zip(instance._prePredictedActiveInput, proto.prePredictedActiveInput):
        row = numpy.array(rowProto, dtype=REAL_DTYPE)

    return instance