결과 유형 목록 - Amazon Braket

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

결과 유형 목록

Amazon Braket은를 사용하여 회로를 측정할 때 다양한 유형의 결과를 반환할 수 있습니다ResultType. 회로는 다음과 같은 유형의 결과를 반환할 수 있습니다.

  • AdjointGradient는 제공된 관찰 가능한의 예상 값의 그라데이션(벡터 도함수)을 반환합니다. 이 관찰 가능한는 관절 차별화 방법을 사용하여 지정된 파라미터와 관련하여 제공된 대상에 대해 작용합니다. 샷=0인 경우에만이 방법을 사용할 수 있습니다.

  • Amplitude는 출력 웨이브 함수에서 지정된 양자 상태의 진폭을 반환합니다. 에서 사용할 수 있습니다.SV1 및 로컬 시뮬레이터만 해당됩니다.

  • Expectation는 지정된 관찰 가능의 예상 값을 반환하며,이 값은이 장의 뒷부분에 소개된 Observable 클래스로 지정할 수 있습니다. 대상 qubits 관찰 가능을 측정하는 데 사용되는를 지정해야 하며 지정된 대상 수는의 수와 같아야 합니다.qubits 관찰 가능한 작업이 있는 입니다. 대상이 지정되지 않은 경우 관찰 가능은 1에서만 작동해야 합니다.qubit 모든에 적용됩니다.qubits 병렬로.

  • Probability는 계산 기준 상태를 측정할 확률을 반환합니다. 대상이 지정되지 않은 경우는 모든 기준 상태를 측정할 확률을 Probability 반환합니다. 대상이 지정된 경우 지정된에 있는 기본 벡터의 한계 확률만 qubits 가 반환됩니다.

  • Reduced density matrix 지정된 대상의 하위 시스템에 대한 밀도 매트릭스를 반환합니다.qubits 의 시스템에서 qubits. 이 결과 유형의 크기를 제한하기 위해 Braket은 대상 수를 제한합니다.qubits 최대 8개까지 가능합니다.

  • StateVector는 전체 상태 벡터를 반환합니다. 로컬 시뮬레이터에서 사용할 수 있습니다.

  • Sample 지정된 대상의 측정 수를 반환합니다.qubit 설정 및 관찰 가능. 대상이 지정되지 않은 경우 관찰 가능은 1에서만 작동해야 합니다.qubit 모든에 적용됩니다.qubits 병렬로. 대상이 지정된 경우 지정된 대상의 수는의 수와 같아야 합니다.qubits 관찰 가능한 작업이 있는 입니다.

  • Variance 지정된 대상의 분산(mean([x-mean(x)]2))을 반환합니다.qubit 요청된 결과 유형으로를 설정하고 관찰할 수 있습니다. 대상이 지정되지 않은 경우 관찰 가능은 1에서만 작동해야 합니다.qubit 모든에 적용됩니다.qubits 병렬로. 그렇지 않으면 지정된 대상 수가의 수와 같아야 합니다.qubits 관찰 가능한를 적용할 수 있습니다.

다양한 디바이스에 지원되는 결과 유형:

로컬 시뮬레이션

SV1

DM1

TN1

Rigetti

IonQ

IQM

부속 그라데이션

N

Y

N

N

N

N

N

Amplitude

Y

Y

N

N

N

N

N

기대치

Y

Y

Y

Y

Y

Y

Y

Probability

Y

Y

Y

N

Y*

Y

Y

밀도 매트릭스 감소

Y

N

Y

N

N

N

N

상태 벡터

Y

N

N

N

N

N

N

Sample

Y

Y

Y

Y

Y

Y

Y

변화

Y

Y

Y

Y

Y

Y

Y

참고

* Rigetti 는 최대 40개의 확률 결과 유형만 지원합니다.qubits.

다음 예제와 같이 디바이스 속성을 검사하여 지원되는 결과 유형을 확인할 수 있습니다.

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-2") # print the result types supported by this device for iter in device.properties.action['braket.ir.openqasm.program'].supportedResultTypes: print(iter)
name='Sample' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000 name='Expectation' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000 name='Variance' observables=['x', 'y', 'z', 'h', 'i'] minShots=10 maxShots=50000 name='Probability' observables=None minShots=10 maxShots=50000

를 호출하려면 다음 예제와 같이 회로에 ResultType추가합니다.

from braket.circuits import Observable circ = Circuit().h(0).cnot(0, 1).amplitude(state=["01", "10"]) circ.probability(target=[0, 1]) circ.probability(target=0) circ.expectation(observable=Observable.Z(), target=0) circ.sample(observable=Observable.X(), target=0) circ.state_vector() circ.variance(observable=Observable.Z(), target=0) # print one of the result types assigned to the circuit print(circ.result_types[0])
참고

일부 디바이스는 측정값을 제공합니다(예: Rigetti)를 결과로서 사용하고 다른는 확률을 결과로서 제공합니다(예: IonQ). 는 결과에 대한 측정 속성을 SDK 제공하지만 확률을 반환하는 디바이스의 경우 사후 계산됩니다. 따라서에서 제공하는 디바이스와 같은 디바이스는 IonQ 는 샷당 측정값이 반환되지 않기 때문에 확률에 따라 측정 결과를 결정합니다. 이 파일에 표시된 대로 결과 객체measurements_copied_from_device에서를 확인하여 결과가 사후 계산되는지 확인할 수 있습니다.

관찰 가능

Amazon Braket에는 측정할 관찰 가능을 지정하는 데 사용할 수 있는 Observable 클래스가 포함되어 있습니다.

각에 관찰 가능한 고유한 비식별성을 하나 이상 적용할 수 있습니다.qubit. 동일한에 두 개 이상의 서로 다른 비식별 관찰 가능 항목을 지정하는 경우 qubit, 오류가 표시됩니다. 이를 위해 텐서 제품의 각 요소는 개별 관찰 가능으로 간주되므로 여러 텐서 제품이 동일한 텐서 제품에 대해 작동하는 것은 허용됩니다.qubit, 단, 해당에 대해 작용하는 요인은 qubit 는 동일합니다.

또한 관찰 가능한를 조정하고 관찰 가능한를 추가할 수 있습니다(스케일링 여부). 그러면 AdjointGradient 결과 유형에 사용할 수 Sum 있는가 생성됩니다.

Observable 클래스에는 다음과 같은 관찰 가능한 항목이 포함됩니다.

Observable.I() Observable.H() Observable.X() Observable.Y() Observable.Z() # get the eigenvalues of the observable print("Eigenvalue:", Observable.H().eigenvalues) # or whether to rotate the basis to be computational basis print("Basis rotation gates:",Observable.H().basis_rotation_gates) # get the tensor product of observable for the multi-qubit case tensor_product = Observable.Y() @ Observable.Z() # view the matrix form of an observable by using print("The matrix form of the observable:\n",Observable.Z().to_matrix()) print("The matrix form of the tensor product:\n",tensor_product.to_matrix()) # also factorize an observable in the tensor form print("Factorize an observable:",tensor_product.factors) # self-define observables given it is a Hermitian print("Self-defined Hermitian:",Observable.Hermitian(matrix=np.array([[0, 1],[1, 0]]))) print("Sum of other (scaled) observables:", 2.0 * Observable.X() @ Observable.X() + 4.0 * Observable.Z() @ Observable.Z())
Eigenvalue: [ 1 -1] Basis rotation gates: (Ry('angle': -0.7853981633974483, 'qubit_count': 1),) The matrix form of the observable: [[ 1.+0.j 0.+0.j] [ 0.+0.j -1.+0.j]] The matrix form of the tensor product: [[ 0.+0.j 0.+0.j 0.-1.j 0.-0.j] [ 0.+0.j -0.+0.j 0.-0.j 0.+1.j] [ 0.+1.j 0.+0.j 0.+0.j 0.+0.j] [ 0.+0.j -0.-1.j 0.+0.j -0.+0.j]] Factorize an observable: (Y('qubit_count': 1), Z('qubit_count': 1)) Self-defined Hermitian: Hermitian('qubit_count': 1, 'matrix': [[0.+0.j 1.+0.j], [1.+0.j 0.+0.j]]) Sum of other (scaled) observables: Sum(TensorProduct(X('qubit_count': 1), X('qubit_count': 1)), TensorProduct(Z('qubit_count': 1), Z('qubit_count': 1)))

Parameters

회로에는 무료 파라미터가 포함될 수 있습니다.이 파라미터는 “한 번 구성 - 여러 번 실행” 방식으로 사용할 수 있으며 그라데이션을 계산하는 데 사용할 수 있습니다. 자유 파라미터에는 문자열로 인코딩된 이름이 있으며,이 이름은 값을 지정하거나 해당 값을 기준으로 구분할지 여부를 결정하는 데 사용할 수 있습니다.

from braket.circuits import Circuit, FreeParameter, Observable theta = FreeParameter("theta") phi = FreeParameter("phi") circ = Circuit().h(0).rx(0, phi).ry(0, phi).cnot(0, 1).xx(0, 1, theta) circ.adjoint_gradient(observable=Observable.Z() @ Observable.Z(), target=[0, 1], parameters = ["phi", theta]

구분하려는 파라미터의 경우 이름(문자열)을 사용하거나 직접 참조를 사용하여 지정합니다. AdjointGradient 결과 유형을 사용하여 그라데이션을 계산하는 작업은 관찰 가능한의 예상 값과 관련하여 수행됩니다.

참고: 자유 파라미터의 값을 파라미터화된 회로에 인수로 전달하여 수정한 경우,를 AdjointGradient 결과 유형으로 사용하여 회로를 실행하고 파라미터를 지정하면 오류가 발생합니다. 이는를 구분하는 데 사용하는 파라미터가 더 이상 존재하지 않기 때문입니다. 다음 예를 참조하세요.

device.run(circ(0.2), shots=0) # will error, as no free parameters will be present device.run(circ, shots=0, inputs={'phi'=0.2, 'theta'=0.2) # will succeed