Is there a way for a single model to predict multiple outputs?

The OPF does not allow multiple outputs. Is there a way to do this using a lower level API?

I’d have a look at the Algorithms API:

You can call the Encoders, SP and TM and Classifier functions separately which gives you finer control. I’m not totally sure the correct answer to your question, tho there is an intuitive way to do that I can think of if you’re willing to bypassing the SP. More specifically I mean passing the index values of the active bits from the encoder right into the TM (as the SP winning columns normally would be).

I say this because its simple to convert between active encoding bits and the raw data type, so you could take the sets of predicted columns from the TM (one for each output field) and treat them as active bits in the encoder and convert back to the raw data type for each.

What about the network API which OPF uses, doesn’t it provide that functionallty?

Is there a way to create an OPF model and add to it a region to predict an additional field?

I haven’t used the Network API myself though I’d wager you could. Maybe @scott, @rhyolight or @subutai could tell us for sure (if you guys don’t mind me name dropping you :sweat_smile:)

I have done so myself by slightly modifying the Python version of nupic to take multiple predictedFields, and simply training multiple classifiers on top of the temporal memory region which is independent of predictedFields. Also needed to do some tinkering with bucketIdx filling, because the classifier regions need them…

You can look at the changes I made in my fork of nupic (warning, repo is now outdated with regards to the main nupic branch):


Related topic:

Which links to:

You might find some guidance in that discussion.

@jclevesque., that seems like a very good improvement to htm_prediction_model class. What do you think about creating a htm_multiprediction_model class and commit it to the repo?