机器学习中的梯度下降算法

时间:2019-01-10 17:16:01

标签: machine-learning gradient-descent

我是机器学习的初学者。在梯度下降算法中有问题。在下面提到的代码中,我的疑问是在

x的第一次迭代值为1

x的第二次迭代值为2

x的第三次迭代值为3

x的第四次迭代值为4

x的第五次迭代值为5

那么对于迭代6到9999,x的值将是多少?

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

def gradient_descent(x,y):

    m_curr = b_curr = 0
    rate = 0.01
    n = len(x)
    plt.scatter(x,y,color='red',marker='+',linewidth='5')
    for i in range(10000):
        y_predicted = m_curr * x + b_curr
        plt.plot(x,y_predicted,color='green')
        md = -(2/n)*sum(x*(y-y_predicted))
        yd = -(2/n)*sum(y-y_predicted)
        m_curr = m_curr - rate * md
        b_curr = b_curr - rate * yd

x = np.array([1,2,3,4,5])

y = np.array([5,7,9,11,13])

gradient_descent(x,y)

1 个答案:

答案 0 :(得分:0)

三种计算批次梯度的方法

  1. 批次
  2. 随机
  3. 小批量

我相信您正在尝试实施Batch变体。在这种情况下,您需要执行以下操作

  1. 更改for循环以运行,直到x或y的大小为止。即db.collection.aggregate([ { $unwind: { path: "$tasks", preserveNullAndEmptyArrays: true } } ])
  2. 在另一个具有10000(或您要运行的迭代次数)的for循环中调用gradient_descent(x,y)。您可能应该使用错误函数来确定这一点