Python 在Pymc中导入模型时开始拟合

Python 在Pymc中导入模型时开始拟合,python,numpy,pymc,Python,Numpy,Pymc,更新:检查堆栈跟踪,我可以看到正在调用MCMC。为什么呢 导入模型时,我会获得附加的输出。我不确定pyMC在做什么。它看起来像是fitting的输出,但我没有调用任何fitting过程 step: 1 potentials:[4.9537616968132445, 4.9537616968132445,4.9537616968132445, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367, 5.6614419392151367

更新:检查堆栈跟踪,我可以看到正在调用MCMC。为什么呢

导入模型时,我会获得附加的输出。我不确定pyMC在做什么。它看起来像是fitting的输出,但我没有调用任何fitting过程

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]

我很确定我做错了什么,但不确定是什么,有什么提示吗?

你调用了
deterministic()
(两次),
离散格式(…)
统一(…)
,和
np.array(…)
。试着添加一些打印语句,看看哪一个是输出的结果。@WarrenWeckesser我的问题更一般。检查堆栈跟踪,我可以看到正在调用MCMC。这是为什么?在Python中执行
导入时,导入的模块将被执行。因此,当您在另一个文件中导入模型时,
model.py
(假设名称是这样)中的所有代码都会运行。“检查堆栈跟踪…”您在说什么堆栈跟踪?在这个问题上加上这个可能会有帮助。@WarrenWeckesser我不知道这是否与这个问题有关。我使用“跟踪”来找出导入模型时调用的内容。当然,所有代码都是导入的。我在这个名为MCMC()的文件中找不到任何位置。所以我不知道为什么会这样。有什么想法吗?