空枝|教你在经典计算机上搭建一个量子神经网络,已开源( 五 )


代码地址:
现在可以编写实现U(θ)所需的函数了 , 我们将采取RY门和CX门交替层的形式来实现函数 。
为什么需要CX层?如果不把它们包括进来 , 就没办法执行纠缠操作 , 这将限制网络能够涉及的希尔伯特空间的范 。 使用CX门 , 网络可以捕捉量子比特之间的交互 。
我们从G 门开始:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源接下来 , 操作CX门:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源现在把这些结合在一起得到U(θ):
空枝|教你在经典计算机上搭建一个量子神经网络,已开源接下来 , 我们创建一个函数来获取网络的输出 , 另一个函数将这些输出转换为类别预测:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源现在我们可以构建一个函数 , 在网络执行上前向传递 。
空枝|教你在经典计算机上搭建一个量子神经网络,已开源紧接着 , 需要写出所有关于测量梯度的函数 。 首先 , 我们必须能够应用控制版本的U(θ):
空枝|教你在经典计算机上搭建一个量子神经网络,已开源使用这个 , 我们可以创建一个函数并得出期望值:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源现在我们可以算出损失函数的梯度 , 最后做的乘法是为了得到π(x, θ) - y(x) 梯度项:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源一旦我们有了梯度 , 就可以使用梯度下降来更新网络参数 , “动量”技巧可以帮助加快训练时间:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源现在我们可以建立自己的损失函数和准确率函数 , 然后就可以观察网络训练的情况:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源最后 , 我们创建训练网络的函数 , 并调用它:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源
空枝|教你在经典计算机上搭建一个量子神经网络,已开源
空枝|教你在经典计算机上搭建一个量子神经网络,已开源我们传递给np.random.sample方法的数字决定了参数集的大小——第一个数字(5)是G层的数量 。
这是我在测试5层网络、15次迭代后得到的数据输出:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源这些数据看起来是相当不错——我们在验证集上达到了100%的准确率 , 这意味着网络成功地覆盖了边缘测试示例!


推荐阅读