NeuralNetwork

class NeuralNetwork(num_inputs, num_weights, sparse, output_shape, input_gradients=False)[source]

Bases: ABC

Abstract Neural Network class providing forward and backward pass and handling batched inputs. This is to be implemented by other (quantum) neural networks.

Parameters:
  • num_inputs (int) – The number of input features.

  • num_weights (int) – The number of trainable weights.

  • sparse (bool) – Determines whether the output is a sparse array or not.

  • output_shape (int | tuple[int, ...]) – The shape of the output.

  • input_gradients (bool) – Determines whether to compute gradients with respect to input data.

Raises:

QiskitMachineLearningError – Invalid parameter values.

Attributes

input_gradients

Returns whether gradients with respect to input data are computed by this neural network in the backward method or not. By default such gradients are not computed.

num_inputs

Returns the number of input features.

num_weights

Returns the number of trainable weights.

output_shape

Returns the output shape.

sparse

Returns whether the output is sparse or not.

Methods

backward(input_data, weights)[source]

Backward pass of the network.

Parameters:
  • input_data (float | list[float] | ndarray | None) – input data of the shape (num_inputs). In case of a single scalar input it is directly cast to and interpreted like a one-element array.

  • weights (float | list[float] | ndarray | None) – trainable weights of the shape (num_weights). In case of a single scalar weight

  • array. (it is directly cast to and interpreted like a one-element)

Returns:

The result of the neural network of the backward pass, i.e., a tuple with the gradients for input and weights of shape (output_shape, num_input) and (output_shape, num_weights), respectively.

Return type:

tuple[ndarray | SparseArray | None, ndarray | SparseArray | None]

forward(input_data, weights)[source]

Forward pass of the network.

Parameters:
  • input_data (float | list[float] | ndarray | None) – input data of the shape (num_inputs). In case of a single scalar input it is directly cast to and interpreted like a one-element array.

  • weights (float | list[float] | ndarray | None) – trainable weights of the shape (num_weights). In case of a single scalar weight it is directly cast to and interpreted like a one-element array.

Returns:

The result of the neural network of the shape (output_shape).

Return type:

ndarray | SparseArray