【问题标题】:Using python and numpy to compute gradient of the regularized loss function使用 python 和 numpy 计算正则化损失函数的梯度
【发布时间】:2018-03-20 01:04:51
【问题描述】:

我有以下公式:

我试图在函数中使用来计算正则化损失函数的梯度。我有dataSet,它是[(x(1), t(1)), ..., (x(n), t(n))] 的数组,以及训练数据n = 15

这是我到目前为止所拥有的,知道损失函数是vector here.

def gradDescent(alpha, t, w, Z):
    returned = 2 * alpha * w
    y = []
    i = 0
    while i < len(dataSet):
        y.append(dataSet[i][0] * w[i])
        i+= 1
    return(returned - (2 * np.sum(np.subtract(t, y)) * Z))

问题是,w 始终等于 (M + 1) - 而在 dataSet 中,t 等于 15。这导致越界乘法。我计算公式错误吗?有什么帮助吗?

【问题讨论】:

    标签: python numpy machine-learning linear-regression


    【解决方案1】:

    我相信您正在搞乱您对数据集数组的索引。还要确保您的数组实际上定义为数组而不是列表。我相信像 list[i][j] 这样的列表索引和像 array[i,j] 这样的数组索引。

    所以我会通过以下方式运行您的数据对象:

    import numpy as np
    dataSet=np.asarray(dataSet)
    

    然后用这个while循环替换你的while循环:

    while i < len(dataSet):
            y.append(dataSet[i,0] * w[i])
            i+= 1
    

    【讨论】:

    • 问题是w 超出范围,因为w 的范围是1-15,而dataTrain 始终是15。
    • 要明确W是维度(15,1)的向量,dataSet是维度(15,2)的向量?
    • 我不确定你在 dataTrain 中引用了什么,这不是你提供的代码中定义的变量。
    • 您是否也将函数 y(x) 定义为 y(x(i))=x(i)*w(i)?
    • 对不起,dataSet 是我的意思。而W 是一个维度为(M, 1) 的向量,dataSet 是一个维度为(15, 2) 的向量。 M 可以是 1-16 的任意位置,具体取决于图形的拟合方式。而且我不确定,我认为这就是 y(x) 的计算方式,但我找不到任何相关信息。目前,我会继续这样做,直到我的教授回复确认为止。
    猜你喜欢
    • 2023-02-26
    • 2016-07-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多