nengo-gui
nengo-gui copied to clipboard
Setting values in Semantic Pointer clouds needs a better controller
When you do a "Set value..." on a Semantic pointer cloud, it doesn't quite reach the value you've asked it to go to.
For example, try this minimal network:
import nengo
import nengo.spa as spa
import numpy as np
D = 8
vocab = spa.Vocabulary(D)
vocab.parse('A')
model = nengo.Network()
with model:
model.test1 = spa.Buffer(D, vocab=vocab)
Open up both a semantic pointer cloud and a semantic pointer plot. Now set the value to A. The plot will show you that it actually gets driven to 0.75*A
. If you try setting the value to 1.33*A
, it'll go to A.
How bad of an idea would it be to parse the given SPA network and to insert a node in place of a spa.State
population. This node would then act like a spa.State
population until over-written. If over-written, the node just provides the output.
With nengo_spa we might want to prohibit setting the pointer on spa.State
and only allow it for Encode
(and Transcode
). That's analogous to ensembles (you can't set the values of those) and nodes (where you can set the value with sliders).
During the meeting, we discussed how we could instead overwrite the output node's function. This should be tried in the context of the existing examples to see if any unexpected behaviour arises.