朱莉娅中的@ad和@addr宏是什么?

时间:2019-11-14 12:22:02

标签: macros julia julia-gen

我正在通过here的Julia中的Gen模块为例,我偶然发现了以下代码:

@compiled @gen function generate_datum(x::Float64, prob_outlier::Float64, noise::Float64, 
                             @ad(slope::Float64), @ad(intercept::Float64))

    if @addr(bernoulli(prob_outlier), :is_outlier)
        (mu, std) = (0., 10.)
    else
        (mu, std) = (x * slope + intercept, noise)
    end
    return @addr(normal(mu, std), :y)
end

抛出

  

UndefVarError:未定义@addr

@ad相同,我怀疑这是同一件事。由于我是Julia的新手,因此搜索不会返回模糊不清的相关内容。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

对于每个https://github.com/probcomp/Gen/issues/161,链接所指向的文件不再属于存储库。这些宏被删除,而master分支反映了这一点!如果要运行这些示例,则需要切换到Gen的旧版本。