Hello Chetan,

That's very kind of you. Your explanations make me have a better understanding 
about the network API. I also watched the video[1] you advised and another 
video[2]. But I'm sorry that I can just understand part of it because of my 
poor English. So I list my questions as follows, though some of them might have 
been explained in videos.
(I learned the network mainly by the code[3], so most of the questions are 
based on file[3])


1. I know when the parameter "learningmode" is set to 1, the connections 
between each column and cell will keep updating. But how to set parameter 
"inferencemode" ? If I have a network sensor-->sp-->tp-->claclassifier,  it is 
obvious that we should set claclassifier's "inferencemode" to be 1 because we 
want to get the output result of claclassifier. My question is how to set sp's 
and tp's "inferencemode" (both sp's and tp 's learningmode are 1 for learning 
continually)?


2. Does likelihood has the relationship with prediction? The "result"[4] is a 
dict, which has two pairs of key-value. One is 1:list1, the other is 
actualValues:list2. List1 and list2 are one-to-one correspondence.  We get the 
actual values in list2 which has the biggest likelihood in list1. And the sum 
of list1 equals 1. But I didn't understand how the two lists are calculated.  
The bucketIndex gets from scalarEncoder.getBucketIndcex(actualInput) is a 
number, and list1's index is a bucket range. What's the corresponding 
relationship between bucketIndex and list1? How to define list1's length and 
bucket range?


3. In a multiEncoder network, if I want to predict field1, can I know which 
fields contribute to field1? Not by swarming.


4. Last time you suggest me to set a parameter to get connection relationship. 
I set the 'temporalImp' in file[3] to 'tm_py' but get the error as follows.



Traceback (most recent call last):
  File "/newdisk/other/pycharm-community-3.4.1/helpers/pydev/pydevd.py", line 
1733, in <module>
    debugger.run(setup['file'], None, None)
  File "/newdisk/other/pycharm-community-3.4.1/helpers/pydev/pydevd.py", line 
1226, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/newdisk/nupic/examples/fyj/QK_test/hierarchy_network_demo.py", line 
370, in <module>
    runDemo()
  File "/newdisk/nupic/examples/fyj/QK_test/hierarchy_network_demo.py", line 
364, in runDemo
    runNetwork(network, numRecords, writer)
  File "/newdisk/nupic/examples/fyj/QK_test/hierarchy_network_demo.py", line 
307, in runNetwork
    network.run(1)
  File 
"/home/abc/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg/nupic/engine/__init__.py",
 line 669, in run
    engine.Network.run(self, n)
  File 
"/home/abc/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg/nupic/bindings/engine_internal.py",
 line 1142, in run
    return _engine_internal.Network_run(self, *args, **kwargs)
  File 
"/home/abc/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg/nupic/regions/TPRegion.py",
 line 450, in compute
    self._compute(inputs, outputs)
  File 
"/home/abc/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg/nupic/regions/TPRegion.py",
 line 481, in _compute
    tpOutput = self._tfdr.compute(buInputVector, self.learningMode, 
self.inferenceMode)
  File 
"/home/abc/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg/nupic/research/TP_shim.py",
 line 82, in compute
    numberOfCells = self.connections.numberOfCells()
AttributeError: 'Connections' object has no attribute 'numberOfCells'


[1] https://www.youtube.com/watch?v=QZBtaP_gcn0
[2]https://www.youtube.com/watch?v=gYOwBlVuJDw
[3]https://github.com/numenta/nupic/blob/master/examples/network/hierarchy_network_demo.py
[4]results =classifier.getSelf().customCompute
(recordNum=recordNumber,patternNZ=tpOutput,classification=classDict)

So, can you explain my questions? Thank you so much in advance.


Jing


------------------ ???????? ------------------
??????: "Chetan Surpur";<[email protected]>;
????????: 2015??10??17??(??????) ????2:52
??????: "fuyajing"<[email protected]>; 

????: Re: A tp program question



Jing,


> Both spRegion and tpRegion have an attribute "bottomUpOut", which are 
> arrays(0 and 1). How to decode the 01 array into a predicted value?


This is what the CLA classifier is used for. It takes these binary output 
arrays, and decodes the input value to the encoder that is the most likely 
prediction.


>  The multiEncoder is not SDR though there is little 1 and much 0.(Or 
> multiEncoder is sparse, not distributed? Which explanation is right?)


It is distributed, but not necessarily sparse. It produces sparse 
representations only if the inputs to the MultiEncoder are all sparse. Either 
way, the output of the SPRegion is sparse and distributed.


> So to top level (for example, classifier), we get   a map from final active 
> columns index (we call it 'finalColumns') to sourceData.


Correct, this is what the CLA classifier does in essence. You can just use it 
on top of the TPRegion to do this classification.


> What's more, I can't understand the code segment in 
> nupic/examples/network/hierachy-network-demo.py.(line 267-272)


The `results` dictionary is produced by the CLA Classifier. If you would like 
to understand the CLA Classifier better, please see Subutai's recent talk on 
how it works [1].


[1] https://www.youtube.com/watch?v=QZBtaP_gcn0


Hope this helps,
Chetan


 
 
On Oct 15, 2015, at 12:34 AM, fuyajing <[email protected]> wrote:

And another question: Both spRegion and tpRegion have an attribute 
"bottomUpOut", which are arrays(0 and 1). How to decode the 01 array into a 
predicted value?
For easier understanding, I want to express my understanding. If I have a wrong 
explanation, please tell me. Thank you in advance. :)
For example, each attribute's value can be encoded into a 01 array, by setting 
params w, n(or radius, or resolution) , max, min and so on.  
A-->1111 0000 0000 0000
B-->0000 1111 0000 0000
C--> 0000 0000 1111 0000
Monday-->111000000000
Tuesday -->011100000000
Thursday-->001110000000
...
Then if there are two attribute need to be encoded, we can just concatenate 
them simply, we call it multiEncoder. 
AMonday-->1111 0000 0000 0000 111000000000
 The multiEncoder is not SDR though there is little 1 and much 0.(Or 
multiEncoder is sparse, not distributed? Which explanation is right?) It just 
the input of the first spRegion. The out put of spRegion and tpRegion is SDR. ( 
We can get it from "bottomUpOut").  From the SDR, we can't distinguish which 
columns represent for which input bits, right?  So to top level (for example, 
classifier), we get   a map from final active columns index (we call it 
'finalColumns') to sourceData. (If we want to predict A, it's a map from 
finalColumns to A; if we want to predict Monday, it's a map from finalColumns 
to Monday.) I think maybe it's the meaning of decode for HTM. The column 
doesn't have a specific correspondence.  Moreover,  how to initialize the 
connection relationship between the input 01 array and first spRegion's columns?


What's more, I can't understand the code segment in 
nupic/examples/network/hierachy-network-demo.py.(line267-272)


results = 
classifier.getSelf().customCompute(recordNum=recordNumber,patternNZ=tpOutput,classification=classDict)
mostLikelyResult = sorted(zip(results[1], results["actualValues"]))[-1]


How does each element of "results" come out? And I found the lengths of 
result[1] and results["actualValues"] are variable lengths.


Looking forward to hear from you at earliest.


Jing










------------------ ???????? ------------------
??????: "??????";<[email protected]>;
????????: 2015??10??15??(??????) ????1:21
??????: "fuyajing"<[email protected]>; 

????: A tp program question



HelloI'm using network API to make predictions. The tp_params has an attribute 
"cellsPerColumn". My question is: How to get the synapses connection between 
columns or cells? Are there any method or code?
Thank you in advance.


Jing

Reply via email to