A method to be performed in a neural array which is configured to form a deep neural network and implement a Restricted Boltzmann Machine, wherein the neural array has multiple selectable array values including a first array value and a second array value and is configured to cause an output signal for an array value to be an input signal for another array value, the method comprises:
- updating a first array value;
- and
- updating a second array value based on the updated first array value,
- wherein the updating the first array value includes:
- selecting the first array value;
- generating a first output signal based on a first input signal and the first array value;
- generating a reconstructed first input signal based on the first output signal and the first array value;
- generating a reconstructed first output signal based on the reconstructed first input signal and the first array value;
- and
- updating the first array value based on the first input signal, the first output signal, the reconstructed first input signal, and the reconstructed first output signal, and
- wherein the updating the second array value includes:
- generating a second input signal based on the first input signal and the updated first array value;
- and
- selecting the second array value.