gpt4 book ai didi

c++ - 从 C++ 程序调用 Stan 例程

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:06 27 4
gpt4 key购买 nike

我读了here可以(我直接解释)调用 Stan来自 C++ 程序的例程。

我有一些复杂的对数似然函数,我用 C++ 编写了这些函数,但我真的不知道如何使用 Stan 语言编写它们。是否可以使用我已经用 C++ 编写的对数似然函数在 Stan 中调用 Monte Carlo 例程?如果有,有这方面的例子吗?

这似乎是一件很自然的事情,但我找不到任何关于如何做到这一点的例子或指示。

最佳答案

经过进一步审查(您可能想取消接受我之前的回答),您可以尝试这样做:在 functions 中编写一个带有用户定义函数的 .stan 程序。具有正确签名(和解析)但基本上什么都不做的 block 。像这样
functions {
real foo_log(real[] y, vector beta, matrix X, real sigma) {
return not_a_number(); // replace this after parsing to C++
}
}
data {
int<lower=1> N;
int<lower=1> K;
matrix[N,K] X;
real y[N];
}
parameters {
vector[K] beta;
real<lower=0> sigma;
}
model {
y ~ foo(beta, X, sigma);
// priors here
}
然后,使用 CmdStan 编译该模型,这将生成一个 .hpp 文件作为中间步骤。编辑 foo_log 正文中的 .hpp 文件调用您的模板化 C++ 函数以及 #include 定义您的东西的头文件。然后重新编译并执行二进制文件。

这可能对你有用,但如果你所做的任何事情都有广泛的用处,我们希望你能贡献 C++ 的东西。

关于c++ - 从 C++ 程序调用 Stan 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862831/

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