gpt4 book ai didi

python - 使用pymc在Python中进行内存溢出

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:58 25 4
gpt4 key购买 nike

即使我使用 pickle 后端,以下明显简单的 MCMC Python 代码也会导致大量内存使用(>15GB)。每当我在 pymc 中使用观察到的变量数组时,就会发生这种情况。知道为什么会这样吗?

import pymc as pymc
import numpy as np

N = 17
numC = 5

A = np.zeros([N,N])
A[0:numC, :] = 1
A[:, 0:numC] = 1

C = pymc.Beta('C', alpha=0.5, beta=0.5, size=N)

@pymc.deterministic(dtype=float)
def q(_C=C):
Q = np.zeros([N,N])
for i in range(0,N-1):
for j in range(i+1, N):
Q[i, j] = Q[j, i] = C[i] + C[j] - C[i]*C[j]

return Q

obs = []
for i in range(0,N-1):
for j in range(i+1, N):
o = pymc.Bernoulli('A%d%d'%(i,j), p=q[i,j], value=A[i,j], observed=True)
obs.append(o)

model = pymc.Model([C, q] + obs)

mcmc = pymc.MCMC(model, db='pickle', dbname='abc.pickle')
mcmc.sample(10000, burn=5000, thin=5)
mcmc.db.close()

最佳答案

  1. 根据个人经验,pickle 在内存中对于大型对象可能会非常胖,而且正如我所见,它通常会在不释放内存的情况下膨胀和增长。
  2. 可以尝试使用memory profiler为了检查内存增长发生的位置,它允许以某种方式修饰函数,以查看执行期间内存增长的漂亮绘图图。

关于python - 使用pymc在Python中进行内存溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28375948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com