查看原文
其他

QPanda 2教程资源 | VQNET中的变量和运算符

OriginQ 本源量子 2021-02-13


hi~

上篇为大家推送了

米子算符类、优化算法

今天小编要介绍的是

变量、运算符

跟我们一起来学习吧!



在上一篇文章中,小编为大家介绍了算法组件:费米子算符类、优化算法。

FermionOperator类跟PauliOperator类似,提供费米子算符之间加、减和乘的基础运算操作,通过整理功能可以得到一份有序排列的结果。

优化算法包括Nelder-Mead算法跟Powell算法,它们都是一种直接搜索算法。我们在QPanda中实现了这两个算法,OriginNelderMead和OriginPowell,这两个类都继承自AbstractOptimizer。

接下来介绍的是QPanda 2的VQNET中的变量和运算符。

变量

变量类是实现符号计算的用户类,用于存储特定混合量子经典网络的变量。通常任务是优化变量以最小化成本函数。变量可以是标量、矢量或矩阵。

变量具有树形结构,它可以包含子节点或父节点。如果变量没有子节点,那么我们称之为叶子节点。我们可以将变量设置为特定值,另一方面,如果变量的所有叶子节点都已设置了值,我们也可以获得该变量的值。

接口介绍

在QPanda中,我们需要引入QPanda::Variational命名空间才能使用变量相关的类。我们可以通过传入一个浮点型的数据来构造一个标量变量, 也可以通过Eigen库中的MatrixXd类型数据的构造一个矢量或矩阵变量。

using namespace QPanda::Variational;


var const_var(1);


MatrixXd m1(2, 2);

m1 << 1, 2, 3, 4;


MatrixXd m2(2, 2);

m2 << 5, 6, 7, 8;


var var1(m1);

var var2(m2);

注解

在定义变量的时候,可以定义变量的类型是否可以微分,默认情况下我们定义的变量的类型都是不可微分的,不可微分的变量相当于placeholder。定义可微分的变量时,需要指定构造函数的第二个参数为true, 例如:var v1(1, true)。

我们可以先定义计算对应的表达式,表达式由变量之间进行加减乘除操作或其它操作组成,表达式也是一个变量。

var v1(10);

var v2(5);


var add = v1 + v2;

var minus = v1 - v2; //var minus(op_type::minus, {v1, v2});

var multiply = v1 * v2;

var divide = v1 / v2;

我们可以在不改变表达式结构的情况下,通过改变某个变量的值,即可得到不同的计算结果。我们可以调用变量的_eval接口,来计算该变量当前的值。

var v1(1);

var v2(2);


var add = v1 + v2;


std::cout << add._eval() << std::endl;// 输出为3


MatrixXd m(1, 1);

m << 3;

v1.setValue(m);


std::cout << add._eval() << std::endl;// 输出为5

实例

下面我们将以更多的示例来展示变量类相关接口的使用。

运算符VQNet包含许多类型的运算符, 这些运算符可以操作变量或占位符。其中,一些运算符是经典运算符,例如加,减,乘,除,指数,对数和点乘等。VQNet还包含来自经典机器学习中所有常见操作符。VQNet还包含有量子运算符,它们是vqp和qop pmeasure。另外,qop和qop pmeasure与量子计算机芯片有关,使用它们需要量子环境。为此,我们需要在使用这两个运算符时需要添加额外的参数。一般来说,我们需要添加量子机器的引用和申请的量子比特来提供量子环境。VQNet定义了如下表所示运算符,所有运算符返回的都是类型为var的变量。


★以上即为QPanda 2变量、运算符部分的详细内容介绍。

★感兴趣的欢迎加入"QPanda 2开发交流群"。(关注“本源量子”公众号,回复“加群”,联系小编即可)

★PC端学习量子计算请登录learn-quantum.com 

★掌上学习请下载"本源溯知APP"

★如有疑问可上量子互动论坛,与我们的大神进行交流讨论。


获取更多QPanda 2教程资源,请点击“阅读原文”。


往期精彩回顾

量子程序序列化以及解析量子程序的二进制文件

逻辑门以及量子程序时钟周期统计

量子门的有效性及判断方法

量子比特的测量方法:量子测量和概率测量

QPanda 2最常用的量子计算模型——量子线路

嗨玩本源QPanda 2,从量子逻辑门实例开始学起!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存