更新:检查堆栈跟踪,我可以看到正在调用MCMC。那是为什么?
导入我的模型时,我得到了附加的输出。我不确定pyMC在做什么。它看起来像拟合的输出,但我没有调用任何拟合程序。
step: 1 potentials:[4.9537616968132445, 4.9537616968132445,4.9537616968132445, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367] value_best:4.95376169681
step: 2 potentials:[4.2460814544113523, 4.2460814544113523, 4.9537616968132445, 4.9537616968132445, 4.2460814544113523, 4.9537616968132445, 4.9537616968132445, 5.9537616968132445, 5.6614419392151367, 5.6614419392151367, 4.9537616968132445, 4.9537616968132445] value_best:4.24608145441
step: 3 potentials:[3.5384012120094606, 4.2460814544113523,
我没有调用Model或MCMC或MAP或任何东西,只是导入了我的模型。
这是我的模特:
from pymc import DiscreteUniform,Uniform, stochastic,deterministic
from rushhour import min_manhattan_distance, opt_solution_instances
from astar import LRTA
import numpy as np
from test import instance_set
from csv import DictReader
from random import random
__all__=['instances','subject_error_rates','learning_iter',
'h_epsilon','model_error_rates']
@deterministic()
def subject_error_rates():
return np.array([1.2 for i in instance_set[:20]])
learning_iter=DiscreteUniform('learning_iter', lower=1, upper=10, doc='learning_iter')
h_epsilon = Uniform('h_epsilon',lower=0.,upper=1.)
instances=np.array(instance_set[:20])
@deterministic
def model_error_rates(instances=instances,h_epsilon=h_epsilon,learning_iter=learning_iter):
def f(x):
return float(opt_solution_instances[i.name])/len(LRTA(i,heur=lambda x: h_epsilon*min_manhattan_distance(x),update_h=True,iters=learning_iter))
return [f(i) for i in instances]
我很确定我做错了什么但不确定它是什么,有什么提示吗?