Pennylane学习笔记(1)-学习目标

前言

  学习语言的过程中,需要不断地回顾和练习,加深记忆,从而融会贯通。本系列一方面是加深对Pennylane编程逻辑的理解,另一方面希望同样在学习Pennylane的朋友可以相互交流,共同进步,后面会逐步更新我目前正在学习的内容,如有描述方面的错误,还请大家多多指正!

Pennylane基础语法

一、Pennylane中的测量

Pennylane中一类重要的函数功能,是计算输出量子态在某个可观测量下的期望。在代码实现过程中有两种方式
( 1 )在某个 P a u l i 可观测量下量子比特的期望值(可观测量仅为 P a u l i 算符) (1)在某个Pauli可观测量下量子比特的期望值(可观测量仅为Pauli算符) 1)在某个Pauli可观测量下量子比特的期望值(可观测量仅为Pauli算符)

qml.expval(qml.PauliZ(wires=0)) #单量子比特测量
qml.expval(qml.PauliZ(0) @ qml.PauliX(2)) #多量子比特联合测量

( 2 )密度矩阵形式的可观测量测量(可观测量定义更自由) (2)密度矩阵形式的可观测量测量(可观测量定义更自由) 2)密度矩阵形式的可观测量测量(可观测量定义更自由)

label_0 = [[1], [0]]
label_1 = [[0], [1]]
state_labels = np.array([label_0, label_1], requires_grad=False)

qml.expval(qml.Hermitian(density_matrix(state_labels[0]),wires=0)) #state_lables[0] = |0><0|

( 3 )测量多个量子比特,得到测量结果的概率 (3)测量多个量子比特,得到测量结果的概率 3)测量多个量子比特,得到测量结果的概率

qml.probs(wires=[0, 1])
二、Keras搭建量子神经网络
def layer(W):
    qml.Rot(W[0, 0], W[0, 1], W[0, 2], wires=0)
    qml.Rot(W[1, 0], W[1, 1], W[1, 2], wires=1)
    qml.Rot(W[2, 0], W[2, 1], W[2, 2], wires=2)
    qml.Rot(W[3, 0], W[3, 1], W[3, 2], wires=3)

    qml.CNOT(wires=[0, 1])
    qml.CNOT(wires=[1, 2])
    qml.CNOT(wires=[2, 3])
    qml.CNOT(wires=[3, 0])

def statepreparation(x):
    qml.BasisState(x, wires=[0, 1, 2, 3])

@qml.qnode(dev)
def circuit(inputs, weights):

    statepreparation(inputs)

    for W in weights:
        layer(W)

    return qml.expval(qml.PauliZ(0)) #[-1,1]

参考资料
[1] qml.expval(qml.Hermitian(y, wires=[0]))代码出处:Data-reuploading classifier
[2] qml.expval(qml.PauliZ(0))代码出处:qml.qnn.KerasLayer
[3] Pennylane中的测量:Measurements

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值