# Evaluate trained probability distributionvalues = bounds0 + bounds1 - bounds0 x 2num_qubits - 1 for x in range2num_qubitsuncertainty_model = g_circuitassign_parametersdictziptheta g_paramsampl
以下是对训练后的概率分布进行评估的代码:
values = [ bounds[0] + (bounds[1] - bounds[0]) * x / (2num_qubits - 1) for x in range(2num_qubits) ] uncertainty_model = g_circuit.assign_parameters(dict(zip(theta, g_params))) amplitudes = Statevector.from_instruction(uncertainty_model).data
x = np.array(values) y = np.abs(amplitudes) ** 2
下面是从目标概率分布中采样的代码:
N = 100000 log_normal = np.random.lognormal(mean=1, sigma=1, size=N) log_normal = np.round(log_normal) log_normal = log_normal[log_normal <= 7] log_normal_samples = [] for i in range(8): log_normal_samples += [np.sum(log_normal == i)] log_normal_samples = np.array(log_normal_samples / sum(log_normal_samples))
下面是绘制分布图的代码:
plt.bar(x, y, width=0.2, label="trained distribution", color="royalblue") plt.xticks(x, size=15, rotation=90) plt.yticks(size=15) plt.grid() plt.xlabel("Spot Price at Maturity $S_T$ ($)", size=15) plt.ylabel("Probability ($%$)", size=15) plt.plot( log_normal_samples, "-o", color="deepskyblue", label="target distribution", linewidth=4, markersize=12, ) plt.legend(loc="best") plt.show(
原文地址: https://www.cveoy.top/t/topic/iUl9 著作权归作者所有。请勿转载和采集!