Skip to content

Commit a69808e

Browse files
Fix MeasureMulti*PauliSum
self.measure_multiple_times returns a [len(obs_list), num_wires] tensor, you have to take the product over the wires first to get the measurement of the Pauli string and then sum over the obs_list (multiplied by coefficients in the case of MeasureMultiQubitPaulisum.
1 parent 611cc2a commit a69808e

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

torchquantum/measurement/measurements.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ def __init__(self, obs_list, v_c_reg_mapping=None):
424424
)
425425

426426
def forward(self, qdev: tq.QuantumDevice):
427-
res_all = self.measure_multiple_times(qdev)
427+
res_all = self.measure_multiple_times(qdev).prod(-1)
428428

429429
return res_all.sum(-1)
430430

@@ -452,8 +452,9 @@ def __init__(self, obs_list, v_c_reg_mapping=None):
452452
)
453453

454454
def forward(self, qdev: tq.QuantumDevice):
455-
res_all = self.measure_multiple_times(qdev)
456-
return (res_all * self.obs_list[0]["coefficient"]).sum(-1)
455+
res_all = self.measure_multiple_times(qdev).prod(-1)
456+
457+
return (res_all * torch.tensor(self.obs_list[0]["coefficient"])).sum(-1)
457458

458459

459460
if __name__ == '__main__':

0 commit comments

Comments
 (0)