我有以下公式:
python - 使用python和numpy计算正则损失函数的梯度-LMLPHP
我试着用它来计算正则损失函数的梯度。我有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。这会导致越界乘法。我计算公式错了吗?有什么帮助吗?

最佳答案

我相信你在数据集数组上的索引被弄乱了。还要确保数组实际上定义为数组而不是列表。我相信list-index-like-list[I][j]和arrays-index-like-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

关于python - 使用python和numpy计算正则损失函数的梯度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46635977/

10-12 17:39