Hello

Are the two algorithms ‘nupic-master’ and ‘htm-core’ different in terms of implementation and performance? Which of them works better?

I have a few questions about these two algorithms. I was very confused and the results I get from the run of these codes contradicts what I have read before.Please help me understand the answers to these questions:

1)I give a specific input to the Spatial pooler algorithm from nupic-master and during several runs the output of the algorithm is always the same( the SDR is fixed).But when I give a specific input to the Spatial pooler algorithm from htm-core and run the algorithm several times the SDR output is different each time. What is the problem?

2)In htm-core I defined the parameters as follows:

default_parameters = {

'numActiveColumnsPerInhArea ’ :15.0,

‘potentialRadius’: 16,

‘boostStrength’: 0.0,

‘columnDimensions’: (28, 28),

‘dutyCyclePeriod’: 1000,

‘localAreaDensity’: 0.1,

‘minPctOverlapDutyCycle’: 0.2,

‘potentialPct’: 0.1,

‘stimulusThreshold’: 10,

‘synPermActiveInc’: 0.01,

‘synPermConnected’: 0.5,

‘synPermInactiveDec’: 0.008

}

But the SDR_output has 41 bits (instead of 15 bits) As shown below. Why? How do I set it up?

sp_out.nonzero() (array([ 76, 100, 123, 127, 146, 160, 216, 230, 267, 280, 294, 304,

310,325, 329, 343, 347, 350, 351, 352, 373, 381, 382, 401, 414,

416,428, 456, 497, 552, 554, 570, 576, 592, 593, 619, 652, 692,

695, 728, 748]),)

3)In the ‘nupic-master’ algorithm in both cases “sp.compute(inputArray,True, activeArray)” and “sp.compute(inputArray,False, activeArray)” the output of a particular input is the same and as follows. Shouldn’t the outputs of these two modes be different from each other?

(‘inputArray.nonzero()’, (array([157, 184, 185, 186, 212, 213, 214, 239, 240, 241, 267, 268, 269,

294, 295, 296, 297, 322, 323, 324, 350, 351, 352, 378, 379, 380,

405, 406, 407, 433, 434, 435, 461, 462, 463, 488, 489, 490, 516,

517, 518, 544, 545, 546, 572, 573, 599, 600, 601, 627, 628, 629,

655, 656, 657, 684]),))

(‘activeArray.nonzero()’, (array([ 12, 13, 71, 99, 149, 159, 176, 219, 270, 335, 504, 525, 653, 677, 713]),))