【发布时间】:2015-11-17 20:06:50
【问题描述】:
scipy.optimize.check_grad 的预期输出是梯度和梯度的有限差分近似之间的差的 2 范数。我无法从输出中了解我的渐变是否足够好。是否存在值必须属于的范围?什么是可接受的错误?
【问题讨论】:
标签: numpy optimization machine-learning scipy
scipy.optimize.check_grad 的预期输出是梯度和梯度的有限差分近似之间的差的 2 范数。我无法从输出中了解我的渐变是否足够好。是否存在值必须属于的范围?什么是可接受的错误?
【问题讨论】:
标签: numpy optimization machine-learning scipy
您的梯度函数返回一个向量,我们称它为g,scipy 数值方法可以为您提供良好的(虽然成本很高)估计v。现在你得到的是
||g-v|| = sqrt( SUM_{i=1}^d (g_i - v_i)^2 )
换句话说,它是在所有维度上求和的梯度平方误差的平方根。什么是可接受的错误?取决于函数和梯度维度。我想说10e-4 以上的一切都是错误的。虽然回答 10e-4 或 10e-10 是否正常取决于您的特定应用程序 - 对简单随机优化有不同的要求(有时只需要每个维度的 符号 而不是值)并且不同了解解决一些复杂数值模拟的精确方法。
【讨论】: