BCM

class BCM : public BasePlasticity

Bienenstock, Cooper and Munro algorithm (BCM).

The idea of BCM theory is that for a random sequence of input patterns a synapse is learning to differentiate between those stimuli that excite the postsynaptic neuron strongly and those stimuli that excite that neuron weakly. Learned BCM feature detectors cannot, however, be simply used as the lowest layer of a feedforward network so that the entire network is competitive to a network of the same size trained with backpropagation algorithm end-to-end.

Public Functions

BCM(const int &outputs, const int &batch_size, int activation = transfer_t::logistic, update_args optimizer = update_args(optimizer_t::sgd), weights_initialization weights_init = weights_initialization(weights_init_t::normal), int epochs_for_convergency = 1, float convergency_atol = 0.01, float interaction_strength = 0.f)

Construct the object using the list of training parameters.

The constructor follows the same nomenclature of the Python counterpart.

Parameters
  • outputs – Number of hidden units.

  • batch_size – Size of the minibatch.

  • activation – Index of the activation function.

  • optimizer – update_args Optimizer object (default=SGD algorithm).

  • weights_init – weights_initialization object (default=uniform initialization in [-1, 1]).

  • epochs_for_convergency – Number of stable epochs requested for the convergency.

  • convergency_atol – Absolute tolerance requested for the convergency.

  • interaction_strength – Set the lateral interaction strength between weights.

BCM(const BCM &b)

Copy constructor.

The copy constructor provides a deep copy of the object, i.e. all the arrays are copied and not moved.

Parameters

bBCM object

BCM &operator=(const BCM &b)

Copy operator.

The operator performs a deep copy of the object and if there are buffers already allocated, the operatore deletes them and then re-allocates an appropriated portion of memory.

Parameters

bBCM object

~BCM() = default

Destructor.

Completely delete the object and release the memory of the arrays.