弃用¶
所有PennyLane的弃用将会引发一个 qml.PennyLaneDeprecationWarning。待处理和已完成的弃用列在下面。
待弃用¶
函数
qsvt_legacy已被弃用。
请改用qml.qsvt。新功能接收输入多项式,而不是角度。在v0.40中已弃用
将在 v0.41 中移除
的
tape和qtape属性QNode已被弃用。 请改用qml.workflow.construct_tape函数。在 v0.40 中弃用
将在v0.41中移除
decompose()中的max_expansion参数已被弃用。在v0.40中不推荐使用
将在 v0.41 中被移除
在
set_decomposition()中,decomp_depth参数已弃用。在v0.40中已弃用
将在 v0.41 中移除
qml.tape.QuantumScript的output_dim属性已被弃用。请改用QuantumScript或MeasurementProcess的shape方法来获取相同的信息。在 v0.40 中弃用
将在 v0.41 中被移除
该
QNode.get_best_method和QNode.best_method_str方法已被弃用。
请改用qml.workflow.get_best_diff_method函数。在v0.40中已弃用
将在 v0.41 中移除
qml.execute中的gradient_fn关键字参数已重命名为diff_method。在 v0.40 中弃用
将在 v0.41 中移除
op.ops和op.coeffs用于Sum和Prod的功能将来会被移除。请改用terms()。在v0.35中已弃用
通过
op.obs访问张量积的项(例如,op = X(0) @ X(1))已被弃用与新的算子运算。用户应使用op.operands代替。在v0.36中已弃用
MultiControlledX是唯一仍然支持用位字符串指定控制值的受控操作。将来,它将不再接受字符串作为控制值。在v0.36中已弃用
完成遗留操作符算术的移除¶
在PennyLane v0.40中,遗留的运算符算术系统已被移除,并完全被在v0.36中引入的新运算符算术功能所取代。有关如何将您的遗留代码迁移到新系统的详细信息,请查看更新的运算符页面。以下功能已被移除:
在PennyLane v0.40中,遗留运算符算术已被移除。这包括
enable_new_opmath(),disable_new_opmath(),Hamiltonian, 和Tensor. 注意qml.Hamiltonian将继续分发到LinearCombination。在 v0.39 中已弃用
在v0.40中移除
hamiltonian()和hamiltonian()已被移除。请使用operation()和operation()分别替代。在v0.39中弃用
在v0.40中移除
pennylane.pauli.simplify()已被移除。请改用pennylane.simplify()或simplify()。在v0.39中被弃用
在 v0.40 中移除
已完成的弃用周期¶
模块
qml.qinfo已被移除。请查看相应的函数在qml.math和qml.measurements模块中。在v0.39中已弃用
在v0.40中移除
对
Device、QubitDevice和QutritDevice的顶层访问已被移除。相应地,它们现在可作为qml.devices.LegacyDevice、qml.devices.QubitDevice和qml.devices.QutritDevice使用。在v0.39中被弃用
在 v0.40 中移除
基态准备模板已被移除。
请改为使用BasisState。在v0.39中被弃用
在 v0.40 中移除
已删除
qml.QubitStateVector模板。请改用StatePrep。在v0.39中被弃用
在v0.40中移除
qml.broadcast已被移除。用户应该改用for循环。在 v0.39 中已弃用
在 v0.40 中移除
参数
max_expansion已被移除clifford_t_decomposition()。在 v0.39 中已弃用
在v0.40中移除
对于
iterative_qpe(),'ancilla'参数已被移除。请改用'aux_wire'参数。在 v0.39 中已弃用
在v0.40中移除
已删除
compile()的expand_depth参数。在 v0.39 中已弃用
在v0.40中移除
已移除助手函数
qml.workflow.set_shots。我们不再在代码中与旧版设备接口交互。相反,应该在录音带上指定拍摄次数,设备应使用这些拍摄次数。在v0.38中弃用
在v0.40中移除
QNode.gradient_fn已被移除。请使用QNode.diff_method代替。QNode.get_gradient_fn也可以用于处理差分方法。在 v0.39 中已弃用
在v0.40中移除
已删除
qml.shadows.shadow_expval变换。请改用qml.shadow_expval测量过程。在 v0.39 中已弃用
在v0.40中移除
PennyLane Lightning 和 Catalyst 将不再支持
manylinux2014(GLIBC 2.17) 兼容的 Linux 操作系统,并将迁移到manylinux_2_28(GLIBC 2.28)。有关更多详细信息,请参见 pypa/manylinux。最后支持的
manylinux2014版本为 v0.36完全迁移到
manylinux_2_28的 v0.37
在
qml.Hamiltonian和qml.ops.LinearCombination中的simplify参数已被移除。
相反,可以在构造的算子上调用qml.simplify()。在v0.37中弃用
在v0.39中已移除
在
qml.device中的decomp_depth参数被移除了。在v0.38中已弃用
在v0.39中移除
函数
qml.qinfo.classical_fisher和qml.qinfo.quantum_fisher已被移除并迁移到qml.gradients模块。因此,应该使用qml.gradients.classical_fisher和qml.gradients.quantum_fisher。在v0.38中已弃用
在v0.39中删除
所有遗留设备(名称为
default.qubit.{autograd,torch,tf,jax,legacy}的设备)已被移除。请改用default.qubit, 因为它支持对遗留设备支持的多个后端进行反向传播。在v0.38中弃用
在v0.39中移除
内部切换设备以获得不同的反向传播兼容设备的逻辑已被移除,因为它是为了移除的
default.qubit.legacy而存在的。在v0.38中弃用
在v0.39中移除
Operator.expand 现在已被移除。请改用 qml.tape.QuantumScript(op.decomposition())。
在v0.38中弃用
在 v0.39 中移除
qml.QNode的expansion_strategy属性已被移除。用户如果需要对输出带进行精细控制,应使用qml.workflow.construct_batch。在v0.38中已弃用
在v0.39中移除
在
qml.specs、qml.draw和qml.draw_mpl中,expansion_strategy参数已被移除。
改为使用level参数,该参数提供了一组更丰富的选项。在v0.38中已弃用
在v0.39中已移除
在
qml.QNode中,max_expansion参数被移除。在v0.38中已弃用
在v0.39中已移除
在
qml.execute中,expand_fn参数已被移除。请创建一个qml.transforms.core.TransformProgram,并将其作为参数传递给qml.execute的transform_program参数。在v0.38中已弃用
在v0.39中已移除
在
qml.execute中,max_expansion参数已被移除。请改用qml.devices.preprocess.decompose和所需的展开级别,将其添加到TransformProgram中,然后将其传递给qml.execute的transform_program参数。在v0.38中已弃用
在v0.39中已移除
qml.execute中的override_shots参数已被移除。请改为将镜头添加到要执行的QuantumTape中。在v0.38中已弃用
在v0.39中已移除
在
qml.execute中,device_batch_transform参数被移除。请创建一个qml.transforms.core.TransformProgram,并传递到qml.execute的transform_program参数中。在v0.38中已弃用
在v0.39中已移除
函数
qml.transforms.sum_expand和qml.transforms.hamiltonian_expand已被移除。
相反,qml.transforms.split_non_commuting可用于实现等效行为。在v0.38中已弃用
在v0.39中已移除
queue_idx属性已从Operator、CompositeOp和SymboliOp类中移除。取而代之的是,索引现在作为CircuitGraph.graph节点的标签存储。在v0.38中已弃用
在v0.38中移除
qml.from_qasm不再从QASM代码中移除测量。使用measurements=[]从原始电路中移除测量。在v0.37中弃用
在v0.38中更改了默认行为
qml.transforms.map_batch_transform已被移除,因为变换可以直接应用于一批录音。
有关更多信息,请参见transform()。在v0.37中弃用
在v0.38中移除
qml.from_qasm_file已被移除。用户可以打开文件,然后使用qml.from_qasm加载其内容。>>> with open("test.qasm", "r") as f: ... circuit = qml.from_qasm(f.read())
在v0.36中已弃用
在v0.37中移除
qml.load函数是一种通用方法,用于将电路从其他库转换为PennyLane。它已被更具体的函数from_qiskit、from_qasm等替代。在v0.36中已弃用
在v0.37中移除
single_tape_transform,batch_transform,qfunc_transform,op_transform,gradient_transform和hessian_transform已被弃用。请改用新的qml.transform函数。请参考 转换文档 以了解如何实现。在v0.34中已弃用
在v0.36中移除
PauliWord和PauliSentence不再使用*进行矩阵和张量乘积,而是使用@来符合 PennyLane 的约定。在v0.35中已弃用
在v0.36中移除
私有函数
_pauli_mult、_binary_matrix和_get_pauli_map来自pauli模块已被移除,因为它们在任何地方都不再使用,并且可以使用pauli模块中的新特性实现相同的功能。在v0.35中弃用
在v0.36中移除
在调用
qml.matrix而不提供wire_order的情况下,对于可能导致线序模糊的对象现在会引发错误。这包括具有多个线的磁带、设备未提供线的 QNodes,或量子函数。在v0.35中已弃用
在v0.36中引发错误
qml.pauli.pauli_mult和qml.pauli.pauli_mult_with_phase已经被移除。相应地,您应该使用qml.simplify(qml.prod(pauli_1, pauli_2))来获取简化后的算子。>>> op = qml.simplify(qml.prod(qml.PauliX(0), qml.PauliZ(0))) >>> op -1j*(PauliY(wires=[0])) >>> [phase], [base] = op.terms() >>> phase, base (-1j, PauliY(wires=[0]))
在 v0.35 中被废弃
在v0.36中移除
MeasurementProcess.name和MeasurementProcess.data已被移除,因为它们包含不再需要的虚拟值。在 v0.35 中已废弃
在v0.36中移除
qml.interfaces的内容已移入qml.workflow。内容在v0.35中移动
在v0.36中移除了旧的导入路径
方法
Operator.validate_subspace(subspace)仅在特定的三元算子集下使用,已被移动到qml.ops.qutrit.parametric_ops模块,并且已从Operator类中移除。在v0.35中弃用
在v0.36中移除
qml.transforms.one_qubit_decomposition和qml.transforms.two_qubit_decomposition已被移除。相反,您应该使用qml.ops.one_qubit_decomposition和qml.ops.two_qubit_decomposition。在v0.34中已弃用
在v0.35中移除
传递附加参数给装饰QNode的变换现在应该通过使用
functools.partial来完成。例如,metric_tensor()变换有一个可选的approx参数,现在应该通过以下方式设置:from functools import partial @partial(qml.metric_tensor, approx="block-diag") @qml.qnode(dev) def circuit(weights): ...
之前推荐的方法现在已被移除:
@qml.metric_tensor(approx="block-diag") @qml.qnode(dev) def circuit(weights): ...
另外,考虑直接调用转换:
@qml.qnode(dev) def circuit(weights): ... transformed_circuit = qml.metric_tensor(circuit, approx="block-diag")
在 v0.33 中已弃用
在v0.35中移除
Observable.return_type已被移除。相反,您应该检查周围测量过程的类型。在v0.34中已弃用
在v0.35中移除
ClassicalShadow.entropy()不再需要atol关键字,因为已经实现了一种更好的方法来估计来自近似密度矩阵重构的熵(可能具有负特征值)。在v0.34中已弃用
在v0.35中移除
QuantumScript.is_sampled和QuantumScript.all_sampled已被移除。用户现在应手动验证这些属性。from pennylane.measurements import * sample_types = (SampleMP, CountsMP, ClassicalShadowMP, ShadowExpvalMP) is_sample_type = [isinstance(m, sample_types) for m in tape.measurements] is_sampled = any(is_sample_type) all_sampled = all(is_sample_type)
在v0.34中已弃用
在v0.35中移除
qml.ExpvalCost已被移除。用户应使用qml.expval()代替。@qml.qnode(dev) def cost_function(params): some_qfunc(params) return qml.expval(Hamiltonian)
在v0.24中已弃用
在v0.35中移除
不再支持将传递给
qml.ctrl的control_values作为字符串来指定。在v0.25中被弃用
在v0.34中移除
qml.gradients.pulse_generator已更名为qml.gradients.pulse_odegen以符合论文命名规范。在 v0.33 中已弃用
在 v0.34 中移除
在
QuantumScript中,prep关键字参数已被移除。StatePrepBase操作应放置在ops列表的开头。在 v0.33 中已弃用
在v0.34中移除
DefaultQubit的公共方法正在进行更改,以遵循新的设备 API。我们将在即将发布的版本中切换到新的设备接口。 在这个新接口中,仿真实现细节 将从设备类本身中抽象出来,通过组合提供,而不是继承。 因此,
DefaultQubit的一些公共和私有方法将不再存在,尽管它在工作流中的行为 将保持不变。如果您直接与设备方法交互,请参考
pennylane.devices.Device和pennylane.devices.DefaultQubit以获取有关新接口外观的更多信息,并准备在即将发布的版本中进行更新。如果您对这些更改有任何反馈,请创建一个 issue 或在我们的 discussion forum 上发布。在v0.31中已弃用
在v0.33中更改
Operator.__eq__和Operator.__hash__的行为已被更新。它们的文档已更新以反映即将到来的变化。操作符相等性的更改允许用户以与
qml.equal相同的方式使用操作符相等性。随着哈希的更改,相等的唯一操作符现在具有相同的哈希。这些更改现在允许如下行为:>>> qml.RX(0.1, wires=0) == qml.RX(0.1, wires=0) True >>> {qml.PauliZ(0), qml.PauliZ(0)} {PauliZ(wires=[0])}
与此同时,之前的行为如下:
>>> qml.RX(0.1, wires=0) == qml.RX(0.1, wires=0) False >>> {qml.PauliZ(0), qml.PauliZ(0)} {PauliZ(wires=[0]), PauliZ(wires=[0])}
在 v0.32 中添加
行为在 v0.33 中发生变化
qml.qchem.jordan_wigner已被删除。请使用qml.jordan_wigner。不再接受列出输入以定义费米子算子;应改用费米子算子qml.FermiA、qml.FermiC、qml.FermiWord和qml.FermiSentence。有关更多详细信息,请参见pennylane.fermi模块文档和 Fermionic Operator 教程。在v0.32中已弃用
在v0.33中移除
在
qubit_observable中,tuple输入类型已被移除。请使用费米子算子对象。fermionic_hamiltonian和fermionic_observable中的tuple返回类型已被移除,这些函数默认将返回一个费米子算子。在v0.32中弃用
在v0.33中移除
参数
sampler_seed的qml.gradients.spsa_grad已被移除。 相反,应该设置参数sampler_rng,可以是一个整数值,用于内部创建一个伪随机数生成器(PRNG),或者是通过np.random.default_rng(seed)创建的 NumPy 伪随机数生成器(PRNG)。 传递一个 PRNG 的好处是可以在多次调用spsa_grad时重用该 PRNG,例如在优化过程中。在v0.32中已弃用
在 v0.33 中移除
关键字参数
RandomLayers.compute_decompositionratio_imprivitive已更改为ratio_imprim以匹配该操作的调用签名。在v0.32中弃用
在v0.33中移除
已移除
QuantumScript.set_parameters方法和QuantumScript.data设置器。请改用QuantumScript.bind_new_parameters。在v0.32中已弃用
在v0.33中移除
在
QubitDevice.statistics中,observables参数已被移除。请改用circuit。在QubitDevice.statistics中使用可观测量列表已被移除。请改用QuantumTape。在v0.28-v0.31中仍然可访问
在v0.32中移除
已移除 CV 可观察量
qml.X和qml.P。请改用qml.QuadX和qml.QuadP。在v0.32中弃用
在v0.33中移除
方法
tape.unwrap()和相应的UnwrapTape和Unwrap类已被移除。在v0.32中弃用
在v0.33中移除
使用
convert_to_numpy_parameters()代替tape.unwrap():from pennylane.transforms import convert_to_numpy_parameters qscript = qml.tape.QuantumTape([qml.RX(torch.tensor(0.1234), 0)], [qml.expval(qml.Hermitian(torch.eye(2), 0))] ) unwrapped_qscript = convert_to_numpy_parameters(qscript) torch_params = qscript.get_parameters() numpy_params = unwrapped_qscript.get_parameters()
qml.enable_return和qml.disable_return已被移除。旧的返回类型不再可用。在v0.32中弃用
在v0.33中移除
在
QNode中,mode关键字参数已被移除,因为它仅在旧的返回系统中使用(该系统也已被移除)。请改用grad_on_execution。在v0.32中弃用
在v0.33中移除
qml.math.purity、qml.math.vn_entropy、qml.math.mutual_info、qml.math.fidelity、qml.math.relative_entropy和qml.math.max_entropy不再支持状态向量作为输入。请在传递给任何这些函数之前,先对输入调用qml.math.dm_from_state_vector。仍然在v0.31中被接受
在v0.32中移除
在
qml.operation.Operator中,do_queue关键字参数已被移除。这影响了所有子类,例如Operation、Observable、SymbolicOp等。请使用qml.QueuingManager.stop_recording()上下文,而不是设置do_queue=False。在v0.31中已弃用
在v0.32中移除
字典
qml.specs不再支持直接访问某些键。相反,这些量可以作为新的Resources对象的字段访问,该对象保存在specs_dict["resources"]中:num_operations不再支持,使用specs_dict["resources"].num_gatesnum_used_wires不再受支持,请使用specs_dict["resources"].num_wiresgate_types不再被支持,请使用specs_dict["resources"].gate_typesgate_sizes现已不再支持,请使用specs_dict["resources"].gate_sizesdepth不再被支持,请使用specs_dict["resources"].depth
这些密钥在v0.31中仍然可以访问,但在v0.32中被移除。
qml.math.reduced_dm已被移除。请使用qml.math.reduce_dm或qml.math.reduce_statevector替代。在 v0.31 中仍然可以访问
在v0.32中移除
QuantumScript的name关键字参数和属性已被移除。 这也影响了QuantumTape和OperationRecorder。在v0.31中已弃用
在v0.32中移除
已移除
Operation.base_name属性。请改用Operator.name或type(obj).__name__。在v0.31中仍然可访问
在v0.32中移除
LieAlgebraOptimizer已更名。请改用RiemannianGradientOptimizer。在v0.31中已弃用
在v0.32中移除
grouping_type和grouping_method参数在qchem.molecular_hamiltonian()中已被移除。在v0.31中已弃用
在v0.32中移除
相反,只需使用指定的分组构造一个新的
Hamiltonian实例:H, qubits = molecular_hamiltonian(symbols, coordinates) grouped_h = qml.Hamiltonian( H.coeffs, H.ops, grouping_type=grouping_type, groupingmethod=grouping_method, )
zyz_decomposition和xyx_decomposition已被移除,使用one_qubit_decomposition与 rotations 关键字替代。在v0.31中已弃用
在v0.32中移除
已移除
qml.utils.sparse_hamiltonian函数。应改用~.Hamiltonian.sparse_matrix。在v0.29中弃用
在v0.31中移除
已经移除了
collections模块。在v0.29中已弃用
在v0.31中移除
qml.op_sum已被移除。用户应改用qml.sum。在v0.29中弃用。
在v0.31中移除。
使用Jax接口的梯度变换的参数
argnum被argnums替代。argnum会自动更改为argnums,用于使用 JAX 的梯度变换,并在 v0.30 中发出警告。argnums是在 v0.31 中使用 JAX 进行梯度变换的唯一选项
Evolution现在将-1加入到输入参数中。之前,负号未包含在内。在v0.29中添加了过渡警告。
更新到v0.30中的当前行为。
在
qml.classical_shadow和qml.shadow_expval中,seed_recipes参数已被移除。一个默认值为None的参数seed可以包含所需的整数种子。在v0.28和v0.29中仍然可以访问
在v0.30中移除
get_operation磁带方法已更新以同时返回操作索引,改变了其签名。通过在v0.29中将arg
return_op_index更改为True可以获得新的签名在v0.30中,旧的签名被新的签名替换
已移除
grouping模块。功能已移至新的pauli模块,并在pauli/utils.py或pauli/grouping/下进行了重新组织。在v0.27、v0.28、v0.29、v0.30中仍然可用
在v0.31中移除
来自
grouping/pauli.py,grouping/transformations.py和grouping/utils.py的函数已被移至pauli/utils.py。剩余的函数已在pauli/grouping/目录中合并。qml.VQECost已被移除。在0.13中已弃用
在 0.29 中移除
就地反转 —
op.inv()和op.inverse=value— 已被弃用。请使用qml.adjoint或qml.pow替代。仍然可以在 v0.27 和 v0.28 中访问
在v0.29中移除
不要使用:
>>> v1 = qml.PauliX(0).inv() >>> v2 = qml.PauliX(0) >>> v2.inverse = True
相反,使用:
>>> qml.adjoint(qml.PauliX(0)) Adjoint(PauliX(wires=[0])) >>> qml.pow(qml.PauliX(0), -1) PauliX(wires=[0])**-1 >>> qml.pow(qml.PauliX(0), -1, lazy=False) PauliX(wires=[0]) >>> qml.PauliX(0) ** -1 PauliX(wires=[0])**-1
方法
qml.utils.decompose_hamiltonian()已被删除。请使用qml.pauli_decompose()。在 v0.27 中仍然可访问
在v0.28中移除
qml.tape.get_active_tape已被弃用。请改用qml.QueuingManager.active_context()。在 v0.27 中已弃用
在v0.28中移除
qml.transforms.qcut.remap_tape_wires已被弃用。请使用qml.map_wires替代。在v0.27中弃用
在v0.28中移除
QuantumTape.inv()已废弃。请改用QuantumTape.adjoint()。该方法返回一个新的录音带,而不是就地修改自身。在v0.27中已弃用
在 v0.28 中移除
qml.tape.stop_recording和QuantumTape.stop_recording已移至qml.QueuingManager.stop_recording在v0.27中已弃用
在v0.28中删除
QueuingContext被重命名为QueuingManager。在v0.27中已弃用名称
QueuingContext在v0.28中移除
QueuingManager.safe_update_info和AnnotateQueue.safe_update_info已被移除。在 v0.27 中已弃用
在v0.28中移除
ObservableReturnTypesSample,Variance,Expectation,Probability,State, 和MidMeasure已移动到measurements从operation。在v0.23中弃用
在 v0.27 中移除
函数
qml.utils.expand已被弃用。应使用qml.math.expand_matrix。在v0.24中已弃用
在v0.27中移除
已移除
qml.Operation.get_parameter_shift方法。请改用gradients模块的方法来使用一般的参数移位规则。在v0.22中已弃用
在 v0.28 中移除
qml.transforms.measurement_grouping已被移除。请改用qml.transforms.hamiltonian_expand。在 v0.28 中已弃用
在v0.29中移除
qml.transforms.make_tape之前已被弃用,但现在没有计划将其移除。它不再引发警告,功能保持不变。在v0.28中已弃用
在 v0.29 中未被弃用