是否可以在python中传递带有一些参数的模块?
所有我的意思是参数是模块中存在一个未在该模块中初始化的变量,我仍然在该模块中使用该变量.简而言之,我希望行为类似于函数,但与函数不同,我希望模块的变量在调用代码中公开.
例如
a.py
#lists like data, count, prob_distribution are constructed from training_pool (not initialized in this file)
x = pymc.Uniform('x', lower = 0, upper = 1)
rv = [ Multinomial("rv"+str(i), count[i], prob_distribution[i], value = data[i], observed=True) for i in xrange(0, len(count)) ]
Run Code Online (Sandbox Code Playgroud)
b.py
import a #I want some way tr pass value of training_pool
m = pymc.MCMC(a)
Run Code Online (Sandbox Code Playgroud)
我希望a.py中的所有随机变量都暴露给MCMC.我对我手头的问题采取了更好的方法,但我也想知道在python中是否可以传递模块的参数
我在这里看了一个类似的问题
pymc警告:value既不是数字也不是带有浮点dtype的数组
但是没有答案,有人可以告诉我是否应该忽略这个警告或者做什么呢?
该模型具有随机变量(等等)tau,其是DiscreteUniform
以下是该模型的相关代码:
tau = pm.DiscreteUniform("tau", lower = 0, upper = n_count_data)
lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)
print "Initial values: ", tau.value, lambda_1.value, lambda_2.value
@pm.deterministic
def lambda_(tau = tau, lambda_1 = lambda_1, lambda_2 = lambda_2):
out = np.zeros(n_count_data)
out[:tau] = lambda_1
out[tau:] = lambda_2
return out
observation = pm.Poisson("obs", lambda_, value = count_data, observed = True)
model = pm.Model([observation, lambda_1, lambda_2, tau]);
m = pm.MAP(model) # **This line caueses error**
print …Run Code Online (Sandbox Code Playgroud)