#优化 #梯度 #ndarray #机器学习 #adam

stochastic_optimizers

基于梯度的随机优化算法的泛型实现

4 个版本 (破坏性更新)

0.3.0 2023 年 8 月 6 日
0.2.0 2023 年 7 月 24 日
0.1.0 2023 年 7 月 23 日
0.0.1 2023 年 7 月 21 日

#1540算法

每月 22 次下载

MIT/Apache

20KB
360

stochastic_optimizers

此包提供了常见随机梯度优化算法的实现。它们被设计为轻量级、灵活且易于使用。

目前实现

  • Adam
  • SGD
  • AdaGrad

此包不提供自动微分,梯度由用户提供。

示例

use stochastic_optimizers::{Adam, Optimizer};
//minimise the function (x-4)^2
let start = -3.0;
let mut optimizer = Adam::new(start, 0.1);

for _ in 0..10000 {
   let current_paramter = optimizer.parameters();

   // d/dx (x-4)^2
   let gradient = 2.0 * current_paramter - 8.0;

   optimizer.step(&gradient);
}

assert_eq!(optimizer.into_parameters(), 4.0);

参数由优化器拥有,可以通过 parameters() 获取引用。优化后,可以通过 into_parameters() 获取。

可以优化的类型

所有实现了 Parameters 特质的类型都可以优化。提供了对标准类型 f32f64Vec<T : Parameters>[T : Parameters ; N] 的实现。

为自定义类型实现它相对简单,请参阅 Parameters

ndarray

通过启用 ndarray 功能,您可以使用 Array 作为 Parameters

单元测试

单元测试需要通过 tch 包使用 libtorch。有关安装细节,请参阅 github

许可证

根据您的选择,许可方式为以下之一

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您提交的旨在包含在该作品中的任何贡献,将采用上述双许可方式,不附加任何额外条款或条件。

依赖项

~95–410KB