构建OpflowQNN以进行生成对抗网络训练
这段代码构建了三个OpflowQNN对象,分别用于生成器、伪造器和真实器的训练。
gen_opqnn 用于生成器的训练。它接受生成器和伪造器共同作用的OpflowCircuit对象 (gendisc_op) 作为输入,并使用生成器的权重参数 (gen_disc_circuit.parameters[:N_DPARAMS]) 和可微分权重参数 (gen_disc_circuit.parameters[N_DPARAMS:]) 作为输入。它还接受期望值函数 (expval)、梯度函数 (gradient) 和量子实例 (qi_sv) 作为输入。生成器希望最小化这个期望值。
disc_fake_opqnn 用于伪造器的训练。它接受相同的OpflowCircuit对象 (gendisc_op) 作为输入,但使用伪造器的可微分权重参数 (gen_disc_circuit.parameters[N_DPARAMS:]) 和权重参数 (gen_disc_circuit.parameters[:N_DPARAMS]) 作为输入。它也接受相同的期望值函数、梯度函数和量子实例。伪造器希望最大化这个期望值。
disc_real_opqnn 用于真实器的训练。它接受真实器的OpflowCircuit对象 (realdisc_op) 作为输入,没有输入参数,并使用真实器的可微分权重参数 (gen_disc_circuit.parameters[:N_DPARAMS]) 作为输入。它也接受相同的期望值函数、梯度函数和量子实例。真实器希望最小化这个期望值。
这些OpflowQNN对象通过将量子电路与经典模型(期望值函数和梯度函数)结合在一起,定义了带有可微分权重的量子电路,用于训练和优化生成对抗网络。
代码中用到的符号:
gendisc_op: 生成器和伪造器共同作用的OpflowCircuit对象gen_disc_circuit: 包含生成器和伪造器权重的OpflowCircuit对象N_DPARAMS: 生成器权重的数量expval: 期望值函数gradient: 梯度函数qi_sv: 量子实例
原文地址: https://www.cveoy.top/t/topic/qkP8 著作权归作者所有。请勿转载和采集!