【问题标题】:How to call EnergyInput() function in Qiskit python?如何在 Qiskit python 中调用 EnergyInput() 函数?
【发布时间】:2019-09-06 14:45:10
【问题描述】:

我想用 Qiskit 实现 SVM。我使用了以下代码。

from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import get_input_instance     
from qiskit.aqua import run_algorithm

n = 2  # dimension of each data point
sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=40,
                                                              test_size=10, n=n, PLOT_DATA=True)

temp = [test_input[k] for k in test_input]
total_array = np.concatenate(temp)

aqua_dict = {
    'problem': {'name': 'svm_classification', 'random_seed': 100},
    'algorithm': {
        'name': 'QSVM.Kernel'
    },
    'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2, 'entangler_map': {0: [1]}},
    'multiclass_extension': {'name': 'AllPairs'},
    'backend': {'name': 'qasm_simulator', 'shots': 256}
}

algo_input = get_input_instance('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array

result = run_algorithm(aqua_dict, algo_input)
for k,v in result.items():
    print("'{}' : {}".format(k, v))

但是这段代码显示了这个错误

ImportError: 无法导入名称“get_input_instance”

这是因为此方法已从 Qiskit 中删除。我从this github issue 获得了这条信息。他们建议以类似的方式使用 EnergyInput() 而不是 get_input_instance()。所以我按照以下方式修改了之前的代码。

!pip install qiskit
from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import EnergyInput
from qiskit.aqua import run_algorithm

algo_input = EnergyInput('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array

现在这段代码显示 EnergyInput 不能接受任何类型的 String 输入。这会产生以下错误。

AttributeError: 'str' 对象没有属性 'to_dict'

我可以在此屏幕截图中显示整个错误。

【问题讨论】:

    标签: python qiskit


    【解决方案1】:

    查看this tutorial 关于创建 QSVM 的信息。他们使用一个名为ClassificationInput() 的类而不是EnergyInput(),将数据传递给该类。

    这使得整体表达: algo_input = ClassificationInput(training_input, test_input, datapoints[0])

    【讨论】:

    • 谢谢。这工作得很好。如果您不介意,请为我的问题投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多