This isn't the first time I've seen someone asking a question like this, so I updated our FAQ:
https://github.com/numenta/nupic/wiki/NuPIC-Usage-FAQ#how-do-i-extract-details-about-the-htms-internal-cellular-state --------- Matt Taylor OS Community Flag-Bearer Numenta On Sun, Mar 15, 2015 at 8:04 PM, Chetan Surpur <[email protected]> wrote: > 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 > > - 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 > > and the wrapper code is here: > 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 > > which will use this pure-Python implementation: > 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.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]> 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 > > >
