Thanks so much for your question!
When defining a quantum function (a function that is passed to a QNode
), non-differentiable parameters (such as inputs
in this case) require a default value to be defined. This is how differentiable parameters of a quantum function are being tracked when creating a QNode
.
In this specific case, the definition of the qnode
function could be changed to def qnode(weights, inputs=None)
. This way weights
is marked as differentiable and inputs
as non-differentiable.
Further to this, there is an upcoming QNode
using the new QuantumTape
class. This is at the moment in experimental phase and compatibility with templates (such as AmplitudeEmbedding
) is underway!
Hope this helps!