我目前正在实现一种梯度下降算法,其中包括使用goldstein-armijo的动态线搜索方法-回溯方法。 它可以工作到一定程度,但是无法收敛,无法分割步长并收敛最小值。 由于我是该主题的新手,所以我真的不知道该如何调整或更改它以使其融合得更多。

# starting position
startx = np.array([x,y])

x_arr = [startx]
x = x_arr[-1]
beta = 0.1
alpha = 0.00001

# search direction,
# f_gradient returns the gradient
p = -f_gradient(x_arr[-1])

# cutoff
cutoff_thressh = 1*(10**(-8))

#initial stepsize
stp = 1

derphi = np.dot(f_gradient(x),p)

while curr_it < lim_it:

    if np.linalg.norm(f_gradient(x)) < cutoff_thressh:
        break

    # armijo conditions to reduce stepsize
    while f(x + stp * p) > (f(x) + alpha * stp * derphi)):
        stp*=beta

    gradient_mult = stp*f_gradient(x)
    x_new = np.subtract(x, gradient_mult)
    x_arr.append(x_new.tolist())

任何建议都是有帮助的! 谢谢

  ask by baconStrips translate from so

本文未有回复,本站智能推荐:

1回复

牛顿法梯度下降回溯算法中的TypeError和ValueError

我正在尝试将牛顿法应用于带有回溯的梯度下降算法。 梯度下降算法: 带回溯算法的梯度下降: 牛顿法: 运行程序后,我收到以下错误消息: 类型错误:只有大小为 1 的数组可以转换为 Python 标量上述异常是以下异常的直接原因: 回溯(最近一次调用最后一次): 文件“c:/Users/Desfi
2回复

梯度下降实现python-轮廓线

作为一项自学练习,我试图从头开始对线性回归问题实施梯度下降,并在等高线图上绘制结果迭代。 我的梯度下降实现给出了正确的结果(用 Sklearn 测试)但是梯度下降图似乎并不垂直于等高线。 这是预期的还是我的代码/理解有问题? 算法 成本函数和梯度下降 阴谋 曲面图和等高线图 注释我的理解是梯度下降垂
1回复

梯度下降算法,我也应该规范抛物线吗?

我对归一化和梯度下降有一些疑问,我无法弄清楚: 除了样本外,我还应该归一化吗? 如果我在执行梯度下降之前对抛物线进行归一化,是否也应该对结果抛物线进行归一化? 先感谢您。
2回复

梯度下降与随机梯度下降算法

我尝试在MNIST手写数字数据集上训练前馈神经网络(包括60K训练样本)。 我每次迭代所有训练样本 ,在每个时期对每个这样的样本进行反向传播 。 运行时当然太长了。 我运行的算法名为Gradient Descent吗? 我读到,对于大型数据集,使用Stochastic Gradi
4回复

梯度下降和牛顿梯度下降有什么区别?

我理解梯度下降的作用。 基本上它试图通过缓慢地沿着曲线向下移动来向局部最优解移动。 我想了解计划梯度下降法和牛顿法之间的实际区别是什么? 从维基百科上,我读到了这条短线“牛顿法使用曲率信息采取更直接的路线”。 这在直觉上意味着什么?
1回复

在MATLABtheta1中实现的梯度下降搜索不正确

我学习了吴安德教授教授的机器学习课程。 这是链接 我尝试实现本课程的第一项作业。 练习2:基于监督学习问题的 线性回归 1,使用学习率α= 0.07实现梯度下降由于Matlab / Octave和Octave索引向量从1开始而不是从0开始,因此您可能会在Matlab / Octave
1回复

我的TensorFlow梯度下降有差异

这是我的代码。 我的sat.csv包含SAT的阅读,写作和数学成绩数据。 可以猜到,这些功能之间的差异并不大。 这是sat.csv的一部分。 我只使用数学,写作和阅读分数。 我上面的代码的目标是,如果我给出数学和阅读分数,则可以预测写作分数。 我从未见过Tensorflow的梯
1回复

无导数的梯度下降

因此,我试图了解Gradient Descent,但我感到困惑。 如果您有抛物线,那是您在改变体重时的损失。 为什么不轻松地找到抛物线的顶点,而不是在x处获取导数?