关于J_debug问题
来源:6-8 如何确定梯度计算的准确性?调试梯度下降法

慕哥326495
2020-03-23
请问一下我通过J_debug计算出来了theta,并且和通过J_math计算的theta值一样,但使用同样的数据集在sklearn中的SGDRegressor()中无法得到相同的theta值,这样的问题如何解决?尝试过修改epsilon或者max_iter,eta0这些参数,或者把J_debug中的参数和SGDRegressor()中的参数设置成完全一样,最后还是无法得到相同的theta值
写回答
1回答
-
抱歉,我没有理解你的问题。使用 sklearn 中的 SGDRegressor() 应该既不会使用 J_debug,也不会使用 J_math。
如果你的意思是,我们自己封装的随机梯度下降法,得到的结果和 sklearn 的随机梯度下降法,得到的结果不同,那是正常的。这和 J_debug 与 J_math 无关,而和随机梯度下降法的实现有关。因为 sklearn 中封装的算法内部,有非常多的优化,和我们自己写的是不一样的。在这个课程中,我们自己实现的算法,主要是帮助同学们理解算法的基本原理和适用场景,但依然是 toy 级别的。在真实场景具体使用上,还是要使用框架为我们提供的算法封装。
继续加油!:)
032020-03-24
相似问题