【问题标题】:How to Solve <class 'int'> Error in Python?如何解决 Python 中的 <class 'int'> 错误?
【发布时间】:2021-10-23 16:41:42
【问题描述】:

我想在 python 中使用自定义的似然函数进行贝叶斯分析。下面是我的代码。

我在运行代码时收到 错误。有谁知道问题是什么?谢谢!

import pandas as pd
import numpy as np
import pymc3 as pm
from gurobipy import quicksum
df = pd.DataFrame(np.random.uniform(1, 125, 100), columns= ['Surface'])

def logp(Surface):
   return (-c*quicksum(j**b for i in range(0,len(df)) for j in 
range(1,Surface[i].astype(int))))

with pm.Model() as model_g:
   c = pm.Uniform('c', lower=0, upper=1)
   b = pm.Uniform('b', lower=0, upper=1)
   y = pm.DensityDist('y', logp, observed={'Surface':df['Surface']})
   trace_g = pm.sample(100, tune=100)  

az.plot_trace(trace_g, var_names=['c']);      

【问题讨论】:

  • 如果您显示堆栈跟踪会有所帮助。错误发生在哪一行?

标签: python tensorflow bayesian pymc3


【解决方案1】:

您不能将 TensorVariable 转换为 int。 Range 需要一个 int。我们不知道 df 或“Surface”是什么样的。

看到这个答案: How to get value from a theano tensor variable backed by a shared variable?

【讨论】:

  • 我无法使用链接解决问题。你能给我更多的提示吗?我在我的问题中包含了 df['Surface'] 。谢谢。
  • 好的,那么请把所有的代码贴出来。我明天去看看。
  • 我更新了问题中的代码。非常感谢!
  • 抱歉耽搁了。你能解释一下你的概率分布函数是做什么的吗?
  • 实际上,我可以通过将“quicksum”替换为“sum+”来解决此问题。感谢您的帮助!
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 2017-12-17
相关资源
最近更新 更多