Source code for nengo_extras.networks.product

import numpy as np

import nengo
from nengo.dists import Choice
from nengo.networks.ensemblearray import EnsembleArray


[docs]def Product(n_neurons, dimensions, input_magnitude=1, net=None): """Computes the element-wise product of two equally sized vectors.""" if net is None: net = nengo.Network(label="Product") config = nengo.Config(nengo.Ensemble) config[nengo.Ensemble].encoders = Choice( [[1, 1], [1, -1], [-1, 1], [-1, -1]]) with net, config: net.A = nengo.Node(size_in=dimensions, label="A") net.B = nengo.Node(size_in=dimensions, label="B") net.product = EnsembleArray(n_neurons, n_ensembles=dimensions, ens_dimensions=2, radius=input_magnitude * np.sqrt(2)) nengo.Connection(net.A, net.product.input[::2], synapse=None) nengo.Connection(net.B, net.product.input[1::2], synapse=None) net.output = net.product.add_output('product', lambda x: x[0] * x[1]) return net