1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年3月10日 |
---|
#36 in #自动微分
34KB
948 行
目录
多塞特
,是 Stan Math
库的 Rust 实现。
本项目并非打算作为 Math
的精确移植,而是作为一个证明概念,利用 Rust 中的自动微分的一些特性,因此旨在作为实验性质。
示例
以下是如何使用 多塞特
来完成 Stan Math 论文中第 2.1 节的问题示例。
#[macro_use]
extern crate dorset;
use dorset::*;
fn main() {
let y: Real = 1.3;
let s = cstack!();
let (mu, sigma) = (var!(s, 0.5), var!(s, 1.2));
let mut lp = var!(s);
lp = &lp - 0.5 * (2.0 * PI).ln();
lp = &lp - ln(&sigma);
lp = &lp - 0.5 * pow((y - &mu) / &sigma, 2.0);
lp.grad();
println!("f(mu, sigma) = {0:.6}", lp.val()); // f(mu, sigma) = -1.323482
println!("d.f/d.mu = {0:.6}", mu.adj()); // d.f/d.mu = 0.555556
println!("d.f/d.sigma = {0:.6}", sigma.adj()); // d.f/d.sigma = -0.462963
}
许可协议
BSD-3-Clause
依赖项
~320KB