|教你在经典计算机上搭建一个量子神经网络,已开源( 四 )
最后 , 对辅助态使用另一个Hadamard门:
本文插图
现在辅助态等于0的概率是:
本文插图
因此如果我们用U(θ)代替B , 用U(θ)的共轭对θ_i的导数来代替A , 然后辅助量子比特为0的概率将会给我们π(x , θ)对θ_i的梯度 。
很好!我们找到了一种在量子计算机上解析计算梯度的方法——现在剩下的就是建立我们的量子神经网络了 。
5 建立量子神经网络
我们导入所有模块:
本文插图
看看我们的数据 , 这是一版删除了一个类的IRIS数据集:
本文插图
我们需要从标签中分离特征(前四列):
本文插图
构建一个函数来做特性映射 。
由于输入向量是归一化的 , 并且是四维的 , 对于映射有一个超级简单的选择——使用2个量子比特来保存编码的数据 , 并使用一个映射将输入向量重新创建为量子态 。
为此 , 我们需要两个函数 。 一个函数从向量中提取角度 。
本文插图
另一个函数将角度转换成量子态 。
本文插图
这样讲解可能有点令人困惑 , 但是你并不一定要理解QNN是如何构建的 。 如果你想了解构建原理可以阅读这些代码 。
代码地址:https://github.com/SashwatAnagolum/launchpad/blob/master/tutorials/load_probability_distributions.ipynb
现在可以编写实现U(θ)所需的函数了 , 我们将采取RY门和CX门交替层的形式来实现函数 。
为什么需要CX层?如果不把它们包括进来 , 就没办法执行纠缠操作 , 这将限制网络能够涉及的希尔伯特空间的范 。 使用CX门 , 网络可以捕捉量子比特之间的交互 。
我们从G 门开始:
本文插图
接下来 , 操作CX门:
本文插图
现在把这些结合在一起得到U(θ):
本文插图
接下来 , 我们创建一个函数来获取网络的输出 , 另一个函数将这些输出转换为类别预测:
本文插图
现在我们可以构建一个函数 , 在网络执行上前向传递 。
本文插图
紧接着 , 需要写出所有关于测量梯度的函数 。 首先 , 我们必须能够应用控制版本的U(θ):
本文插图
使用这个 , 我们可以创建一个函数并得出期望值:
本文插图
推荐阅读
- 享帮米之家|隐秘的生意 | 你在几十家网店买的东西,可能都来自同一家公司
- IBM|今年是IT巨头转向云计算的好时候吗?
- 三易生活|剥离传统IT服务,蓝色巨人要转身All in云计算
- 苹果手机,5G|iPhone 6正式退役,一代经典之作,我还是舍不得说再见
- 苹果手机|烂大街的三款4G手机,全都是高性价比,有你在用的吗?
- 苹果手机|iPhone 6正式退役,一代经典之作,我还是舍不得说再见
- 苹果手机|奇怪!为啥iPhone手机经典的“静音键”,却从没被国产手机模仿?
- IBM|百年IBM再度迎来历史性变革 拆分基础设施服务部门全力押宝云计算
- 红米手机|千元机并没有你想的那么不堪,这几款早已烂大街,有你在用的吗?
- 超级计算机|NVIDIA宣布NVIDIA DGX SuperPOD已就绪
