ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
vde::sdf::GradientDescent类 参考

固定学习率的简单梯度下降优化器 更多...

#include <sdf_optimize.h>

Public 成员函数

 GradientDescent (double lr)
 构造优化器 更多...
 
double step (std::vector< double > &params, const std::function< double(const std::vector< double > &, std::vector< double > &)> &grad_fn)
 执行单步梯度下降 更多...
 
void set_learning_rate (double lr)
 设置学习率 更多...
 
double learning_rate () const
 获取学习率 更多...
 
int iteration () const
 获取当前迭代次数 更多...
 

详细描述

固定学习率的简单梯度下降优化器

管理迭代计数和学习率,提供 step() 方法执行单步参数更新。

auto params = collect_params(root);
GradientDescent gd(0.01);
for (int i = 0; i < 100; ++i) {
auto loss = gd.step(param_vals, [&](auto& vals, auto& grad) {
// 填充 grad,返回 loss
});
if (loss < tol) break;
}
GradientDescent(double lr)
构造优化器
Definition: sdf_optimize.h:434
std::vector< ParamRef > collect_params(SdfNodePtr &root)
从叶节点收集所有可变数值参数

在文件 sdf_optimize.h428 行定义.

构造及析构函数说明

◆ GradientDescent()

vde::sdf::GradientDescent::GradientDescent ( double  lr)
inlineexplicit

构造优化器

参数
lr学习率(步长因子)

在文件 sdf_optimize.h434 行定义.

成员函数说明

◆ iteration()

int vde::sdf::GradientDescent::iteration ( ) const
inline

获取当前迭代次数

在文件 sdf_optimize.h459 行定义.

◆ learning_rate()

double vde::sdf::GradientDescent::learning_rate ( ) const
inline

获取学习率

在文件 sdf_optimize.h456 行定义.

◆ set_learning_rate()

void vde::sdf::GradientDescent::set_learning_rate ( double  lr)
inline

设置学习率

在文件 sdf_optimize.h453 行定义.

◆ step()

double vde::sdf::GradientDescent::step ( std::vector< double > &  params,
const std::function< double(const std::vector< double > &, std::vector< double > &)> &  grad_fn 
)

执行单步梯度下降

调用 grad_fn 获取当前参数的梯度和损失值, 然后沿负梯度方向更新参数: param_i -= lr · grad_i。

参数
params参数向量(原地修改)
grad_fn梯度计算函数,签名为 double(const std::vector<double>& vals, std::vector<double>& grad_out) 接受当前参数值,填充 grad_out 并返回损失标量。
返回
当前损失值

该类的文档由以下文件生成: