I was looking through the python source for the SDR classifier and was wondering why the following change was made:
Specifically this line, the target distribution went from:
targetDist[classification["bucketIdx"]] = 1.0
for bucketIdx in bucketIdxList: targetDist[bucketIdx] = 1.0/numCategories
I would have thought the first version was correct, that given the temporal memory’s output, you want to map it to its associated bucket via learning.
I might be wrong, but doesn’t the new version make the assumption that inputs are uniform? What if a particular output is rarely seen?