You need a feedback topic for documentation.
qml.expval needs to be better explained in the documentation
This function returns an expectationMP which I found it impossible to recover the expval as a double from.
However when returned inside a qnode the return type becomes pennylane.numpy.tensor.tensor.
So there is black magic going on here that is not at all obvious. In particular the documentation needs to explain the obvious which is how one can obtain a double from eZ when one writes:
eZ = expval(PauliZ(0))
or warn that
eZ = expval(PauliZ(0))
eX = expval(PauliX(0))
eY = expval(PauliY(0))
isn’t going to return what one might naively expect it to and you can’t write the code this way.
Thanks… this was rough to debug without the suggested documentation
Hey @IanDavis! Welcome to the forum
Thank you for your feedback . I think the main source of confusion here is the distinction between
qml.expval on its own versus when it’s returned from a QNode. Let me explain what’s going on under the hood at a high level.
If I just print out
qml.expval(qml.PauliZ(0)), here’s what I get:
>>> import pennylane as qml
In that sense, the documentation for
expval is correct: it’s returning a measurement process instance —
expval(PauliZ(wires=)) — whose type is
However, a measurement process instance has no meaning / value on its own — it’s simply a process. A value is associated to the process when there’s something to inject into the process: a quantum state generated by a quantum circuit! So, in the context of being returned from a QNode — pennylane’s lingo for a quantum circuit — the measurement is assigned a value whose type is a
pennylane.numpy.tensor.tensor, as you said.
pennylane.numpy.tensor.tensor really just means a NumPy array .
Let me know if this helps!
That was a really good question, by the way!
Thanks Isaac, my main point was that this needs to be explained more clearly in the documentation. Otherwise I am unlikely to be alone in putting a lot of effort into trying to find some way of recovering the expectation value from an ExpectationMP. There is nothing to suggest that one can’t do this. Your comments in the documetation would be helpful here.
Also I think that the top level topics should include a topic focused on documentation, and how the documentation might be improved, corrected, etc.
Thanks! I sent your feedback to the right people here and it’s in their hands . In the meantime, please feel free to ask as many questions as you need to here on the forum