Hello,
In one PennyLane demo (transfer learning) the circuit is as follows:
@qml.qnode(dev, interface="torch")
def quantum_net(q_input_features, q_weights_flat):
"""
The variational quantum circuit.
"""
# Reshape weights
q_weights = q_weights_flat.reshape(q_depth, n_qubits)
# Start from state |+> , unbiased w.r.t. |0> and |1>
H_layer(n_qubits)
# Embed features in the quantum node
RY_layer(q_input_features)
# Sequence of trainable variational layers
for k in range(q_depth):
entangling_layer(n_qubits)
RY_layer(q_weights[k])
# Expectation values in the Z basis
exp_vals = [qml.expval(qml.PauliZ(position)) for position in range(n_qubits)]
return tuple(exp_vals)
In the context of image classification using a quantum neural network (QNN), doesnt it make more sense to use qml.probs
rather than qml.exp_vals
for obtaining the outputs of the QNN? I think so because (1). The probabilities obtained from qml.probs
represent the likelihood of the quantum system being in each computational basis state which aligns well with the probabilistic nature of classification tasks, where each class is assigned a probability or confidence score. By using qml.probs
, I can interpret the QNN’s output as a probability distribution over the different classes.
2. Softmax activation: The probabilities obtained from qml.probs
can be directly used as inputs to a softmax activation function, which is commonly applied in the final layer of a neural network for multi-class classification. The softmax function normalizes the probabilities and ensures they sum up to 1, providing a meaningful representation of class probabilities.
Kindly let me know where I am wrong here,
Thanks.