我正在拟合一个分层模型,其中一个变量的形状>10K,并且该模型需要 500+k 个样本才能收敛。我想使用持久后端进行跟踪,以便以后可以比较不同的模型。我尝试使用 SQLite 后端,出现以下错误:
/opt/conda/lib/python2.7/site-packages/pymc3/backends/sqlite.pyc in _create_table(self) 123 语句 = template.format(table=varname, 124 value_cols=colnames) --> 125 self.db .cursor.execute(语句)126 127 def _create_insert_queries(自我,链):
OperationalError:individual_freq 上的列太多
我认为这是因为我试图为我的所有变量保存跟踪,包括形状> 10K 的向量变量。我不需要/不想为向量保存跟踪 - 我只对顶级变量感兴趣。使用内存后端时,我可以像这样显式指定变量列表:
trace = pm.sample(1000000, step, start=start, progressbar=False,
trace=[alpha,beta,uplift,mo_drop])
但是在使用 SQLite 时,我只能指定:
backend = SQLite('beta_poisson_monthly_drop.sqlite')
trace = pm.sample(1000000, step, progressbar=False,
trace=backend)
我想做的是这样的:
backend = SQLite('beta_poisson_monthly_drop.sqlite')
trace = pm.sample(1000000, step, progressbar=False,
trace=backend, vars=[alpha,beta,uplift,mo_drop])
可能吗?这应该是功能请求吗?感谢您的任何建议。