Python Jupyter笔记本中的pymc3-型号不是;“重置”;

Python Jupyter笔记本中的pymc3-型号不是;“重置”;,python,jupyter-notebook,pymc3,Python,Jupyter Notebook,Pymc3,我正在pymc3中制作一个模型的原型,该模型具有由networkxdigraph对象指定的变量之间的依赖结构。这似乎很有效。然而,我在pymc3中遇到了所谓的“模型内存”或“模型状态”问题。请允许我澄清: 在代码中有一种称为build\u mdl(data\u set,digraph)的方法,它接收数据集,并使用它来确定感兴趣的变量(简单分类变量)的概率分布。请注意,这与pymc3变量的观察值不同,数据集仅用于初始化分类变量的分布/概率向量 在模型构建过程中,运行循环/图遍历。在开始时,在进行任

我正在pymc3中制作一个模型的原型,该模型具有由
networkx
digraph
对象指定的变量之间的依赖结构。这似乎很有效。然而,我在pymc3中遇到了所谓的“模型内存”或“模型状态”问题。请允许我澄清:

在代码中有一种称为
build\u mdl(data\u set,digraph)
的方法,它接收数据集,并使用它来确定感兴趣的变量(简单分类变量)的概率分布。请注意,这与pymc3变量的
观察值
不同,数据集仅用于初始化分类变量的分布/概率向量

在模型构建过程中,运行循环/图遍历。在开始时,在进行任何遍历之前,我使用标准上下文块:
和pm.Model()作为mdl:
。在图中的每个节点上,将使用
var=pm.category('var_name',p=…)
初始化
pymc3
变量,最后,返回的将是此迭代过程生成的整个
mdl
对象

有时,我想修改数据集,或者在保持变量不变的情况下修改图中的结构。很公平-我假设在方法范围之外更改了
有向图
数据集
变量,然后再次调用该方法将生成具有新依赖项的新模型。然而,这并没有发生。似乎
pymc3
(或者可能
Theano
)仍然“记住”这些变量或将它们保存在内存中,因为我得到了错误:

1193         """Add a random variable to the named variables of the model."""
1194         if self.named_vars.tree_contains(var.name):
-> 1195             raise ValueError(f"Variable name {var.name} already exists.")
有没有人知道如何处理这个问题,并在每次调用时“刷新”模型和所有变量?这是一个jupyter问题,
pymc3/theano
设计选择,还是仅仅是我的错误/糟糕的设计