Mateja, To add to Scott's answer, a good example to look at is this file in the Cerebro 2 project that extracts a bunch of relevant information from the Spatial Pooler and Temporal Memory: https://github.com/numenta/nupic.cerebro2.server/blob/master/py/cerebro2/patcher.py <https://github.com/numenta/nupic.cerebro2.server/blob/master/py/cerebro2/patcher.py>
- Chetan > On Mar 14, 2015, at 5:29 PM, Scott Purdy <[email protected]> wrote: > > Hi Mateja, > > This is a good question. The example that you mention is using the CLAModel, > which is an OPF wrapper around a Network instance. A Network has a set of > Regions that are linked together and each Region is a single algorithm > component (like encoders, a spatial pooler, or a temporal memory instance). > To get the data you are interested in, the first step is to extract the > algorithm instances from the network, specifically the temporal memory > (called TP in the code) and the spatial pooler. Here is a sample: > > # Extract the spatial pooler > spRegion = model._getSPRegion() > > # Extract the temporal memory > tmRegion = model._getTPRegion() > tm = tmRegion.getSelf()._tfdr > > # Get the active cells > tm.infActiveState["t"] > > > Spatial Pooler - for connections between columns and inputs > > From here, you can look at the implementations of the algorithms to see how > to get each of the pieces of information that you need. The spatial pooler is > a Python wrapper around a C++ class. The implementation is here: > https://github.com/numenta/nupic.core/blob/master/src/nupic/algorithms/SpatialPooler.hpp > > <https://github.com/numenta/nupic.core/blob/master/src/nupic/algorithms/SpatialPooler.hpp> > > and the wrapper code is here: > https://github.com/numenta/nupic/blob/284f53d55aeb948857267246661a617caf8848fe/nupic/bindings/algorithms.i#L1829 > > <https://github.com/numenta/nupic/blob/284f53d55aeb948857267246661a617caf8848fe/nupic/bindings/algorithms.i#L1829> > > Alternatively, you can change the model parameters in this file to set > spatialImp to "py": > https://github.com/numenta/nupic/blob/284f53d55aeb948857267246661a617caf8848fe/examples/opf/clients/hotgym/simple/model_params.py#L99 > > <https://github.com/numenta/nupic/blob/284f53d55aeb948857267246661a617caf8848fe/examples/opf/clients/hotgym/simple/model_params.py#L99> > > which will use this pure-Python implementation: > https://github.com/numenta/nupic/blob/master/nupic/research/spatial_pooler.py > <https://github.com/numenta/nupic/blob/master/nupic/research/spatial_pooler.py> > > Temporal Memory - for connections between cells, active cells, predicted > cells, anomaly score > > The example you mention is using a hybrid Python/C++ temporal memory > implementation. The Python class is called TP10X2 and some of the state is > stored in a C++ class called Cells4: > https://github.com/numenta/nupic/blob/master/nupic/research/TP10X2.py > <https://github.com/numenta/nupic/blob/master/nupic/research/TP10X2.py> > https://github.com/numenta/nupic.core/blob/master/src/nupic/algorithms/Cells4.hpp > > <https://github.com/numenta/nupic.core/blob/master/src/nupic/algorithms/Cells4.hpp> > > I hope this helps. If you have trouble getting some values then let me know! > > On Fri, Mar 13, 2015 at 11:31 AM, Mateja Putic <[email protected] > <mailto:[email protected]>> wrote: > I am working on a project related to computer architecture and HTM and I am > interested in extracting architectural parameters from the CLA after > learning. What's the best way to do this? > > For example, in the examples/opf/clients/hotgym/simple example, after running > the CLA with the inputs, I'd like to extract these parameters from the model: > > - Connections between bits of the input vector and columns > - Connections between cell outputs and segments > - Number of segments on a cell > - Segment thresholds > > What data structures contain this information, and in what file(s) are their > getters? > > Thanks, > > -- > Mr. Mateja Putic > Ph.D Candidate > Department of Electrical and Computer Engineering > University of Virginia > (703) 303-2099 <tel:%28703%29%20303-2099>
