scipy.optimize.check_grad的期望输出是梯度差与梯度有限差分逼近的2-范数。我无法从输出中了解我的梯度是否足够好。这些值必须属于哪些范围?什么是可接受的错误?
发布于 2015-11-17 12:06:50
梯度函数返回一个向量,让我们称它为g,而枕形数值方法给出了很好的(尽管代价很高)估计v。现在你得到的是
||g-v|| = sqrt( SUM_{i=1}^d (g_i - v_i)^2 )换句话说,它是你在所有维度上的梯度平方误差的平方根。什么是可接受的错误?取决于函数和梯度维数。我想说,10e-4之上的每件事都是错误的。尽管回答10e-4还是10e-10是否正常取决于您的特定应用程序--对于简单随机优化(有时只需要每个维度的符号而不是值)有不同的要求,但对于求解一些复杂的数值模拟的精确方法则不同。
https://stackoverflow.com/questions/33754691
复制相似问题