- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修改 ceres 的默认行为,即计算残差的平方和作为成本函数。我希望它只计算总和(残差已经以只能为正的方式计算)
根据文档,我应该使用 ConditionedCostFunction
这是我所做的:我定义了带有 1 个残差和 1 个参数的调节器
struct Conditioners : ceres::CostFunction
{
public:
Conditioners()
{
set_num_residuals(1);
mutable_parameter_block_sizes()->push_back(1);
}
~Conditioners()
{}
template<typename T>
T operator() (T x)
{
return T(x * x);
}
bool Evaluate(double const* const* parameters, double* residuals, double** jacobians) const
{
return true;
}
};
我把调节器放在一个 vector 中
std::vector<ceres::CostFunction*> conditioners;
for(int i = 0; i < 1; i++)
conditioners.push_back(new Conditioners());
ceres::ConditionedCostFunction* ccf =
new ceres::ConditionedCostFunction(cost_function, conditioners, ceres::TAKE_OWNERSHIP);
problem.AddResidualBlock(ccf, NULL, &x);
它编译和一切。但这并不能解决问题。它甚至没有开始。它说:
Ceres Solver Report: Iterations: 0, Initial cost: 4.512500e+01, Final cost: 4.512500e+01, Termination: CONVERGENCE
x : 0.5 -> 0.5
代替:
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 4.512500e+01 0.00e+00 9.50e+00 0.00e+00 0.00e+00 1.00e+04 0 2.99e-04 1.04e-03
1 4.511598e-07 4.51e+01 9.50e-04 9.50e+00 1.00e+00 3.00e+04 1 3.84e-04 9.72e-03
2 5.012552e-16 4.51e-07 3.17e-08 9.50e-04 1.00e+00 9.00e+04 1 2.98e-05 9.92e-03
Ceres Solver Report: Iterations: 2, Initial cost: 4.512500e+01, Final cost: 5.012552e-16, Termination: CONVERGENCE
x : 0.5 -> 10
(如果你想自己试试,这个例子修改了helloword example)您对出了什么问题有任何指示吗? (ceres 报告没有更具体)
最佳答案
我找到了解决方案,即:
struct Conditioners : ceres::CostFunction
{
public:
Conditioners()
{
set_num_residuals(1);
mutable_parameter_block_sizes()->push_back(1);
}
~Conditioners()
{}
template<typename T>
T operator() (T x)
{
return T(x * x);
}
bool Evaluate(double const* const* parameters, double* residuals, double** jacobians) const
{
residuals[0] = parameters[0][0] * parameters[0][0]
if (jacobians)
jacobians[0][0] = 2.0 * parameters[0][0]
return true;
}
};
我的错误是认为我只需要重新实现 () 运算符,ceres 就会自动找到 jacobian。它没有。
关于c++ - 修改平方和 [ceres-solver],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574010/
我是 ceres(非线性最小二乘)求解器和 C++ 模板编程的新手。我已经通过下载 http://grail.cs.washington.edu/projects/bal/ 上发布的数据集成功安装了
我正在尝试修改 ceres 的默认行为,即计算残差的平方和作为成本函数。我希望它只计算总和(残差已经以只能为正的方式计算) 根据文档,我应该使用 ConditionedCostFunction 这是我
我尝试使用类似于 Features2D + Homography to find a known object 的方法比较图像而是将findHomography()替换为自己编写的findAffine
我想用 Ceres 优化一个有 n 个参数的函数。如何找到这个函数的梯度尚不清楚,尽管我确实有一个明确定义的成本。到目前为止,我一直在使用具有数值微分功能的 GSL,但我想我会尝试使用具有自动差异功能
我有 ubuntu 16.04.4 LTS xenial,我想安装 ceres,但不是作为静态库。我想将它安装为共享库。 我通过此链接按照说明进行操作:http://ceres-solver.org/
据我了解,Ceres的接口(interface)要求将每个残差定义为一个仿函数,其中 operator()是 const成员函数。这是我感兴趣的示例: class some_residual {
我想使用ceres计算三角形坐标。 对于这个问题,我需要解决网格中的网格坐标。每个三角形都有自己的顶点,但可以使用三角形(3 个顶点)和边(4 个顶点)等结构。 示例数据(伪代码): triangle
Ceres 求解器允许使用分段三次 hermite 插值进行插值,我正尝试使用它来为 Eigen 创建三次插值。 This snippet from ceres/examples展示了如何设置插值器。
本文整理了Java中com.bc.ceres.binding.dom.XppDomElement类的一些代码示例,展示了XppDomElement类的具体用法。这些代码示例主要来源于Github/St
Google Ceres Solver 解决了稳健的非线性边界约束最小二乘问题。 我可以使用非线性最小二乘求解器来求解非线性方程组的解吗? 来自维基百科:“最小二乘法是一种标准方法,用于求解超定系统的
我正在尝试编译 ceres 求解器并将其部署到 Android 项目中。 我成功编译了 ceres(1.8.0 和 1.9.0,都试过了),从 ceres jni 文件夹运行 ndk-build。 然
我一直在使用ceres-solver很长一段时间以来,它是一个了不起的工具。到目前为止,我的使用并不是基于可重用代码,我正在努力改进这一点。 Ceres 使用具有特定模板化方法的特定结构作为其 aut
我使用 brew 安装了 Eigen 和 Ceres-Solver 作为现有项目的先决条件。 当我为项目运行 make 时,我收到以下消息 Found Eigen dependency, but th
我有一个模板库,其中一些函数专门用于 float 和 double 类型。此特化使用 sse/avx,因此,此库具有 -march=native -mavx2 编译器标志。当我尝试使用此库的某些函数(
我正在尝试使用 Google 的 Ceres Solver 求解非线性系统。下面的示例来自此页面:http://terpconnect.umd.edu/~petersd/460/html/newton
本文整理了Java中com.bc.ceres.binding.dom.XppDomElement.()方法的一些代码示例,展示了XppDomElement.()的具体用法。这些代码示例主要来源于Git
我正在尝试将 ceres 求解器与我的 android 应用程序一起使用,但似乎没有很多关于正确使用它们的文档。我遵循了 ceres 求解器网站的构建说明以及这个有用的教程: http://tech.
我正在为一个项目使用 ceres 求解器,当我调用 ceres::Solve 函数时,库开始输出如下行: iterative_schur_complement_solver.cc:88 No para
我正在尝试构建 Ceres 1.13.0适用于使用 Xcode 9.2 (9C40b) 和 CMake 3.11.0-rc3 的 iOS 10+。似乎 CMake 无法识别 Xcode 9 提供的 c
我安装了 ceres-solver 使用 brew install ceres-solver 在 macOS 上。 我为使用 Ceres 的客户项目创建了一个 CMake.txt。 cmake_min
我是一名优秀的程序员,十分优秀!