def _seed(self, seed=-1): """ Initialize the random seed """ if seed != -1: self.random = NupicRandom(seed) else: self.random = NupicRandom()
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
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
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))
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
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
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