Преобразование градиентного спуска с регуляризацией L2 в код

Я застрял при написании этой строки кода - это действительно простая строка кода, которая меня сбивает с толку.

Я должен написать функцию градиентного спуска с параметрами-весами, X, y, train_len (определенными как количество строк X), альфа, learning_rate и num_iter.

Первая производная функции потерь по весу находится здесь. Я пытался написать код, подобный этому:

for i in range(0, n_iter):

  weights = weights - learning_rate * (np.multiply(-2, np.dot(X.transpose(), y - np.dot(X, weights))) + np.multiply(2*alpha, weights))

return weights

К сожалению, я заканчиваю с nan, когда пытаюсь использовать функцию градиентного спуска.

1 ответ

for i in range(0, n_iter):
  first_derivative = -2 * np.dot(X.T, y - np.dot(X, weights)) + 2 * alpha * weights
  weights = weights - (learning_rate / train_len) * first_derivative
return weights

Оказывается, я забыл поделить на количество обучающих примеров.

Другие вопросы по тегам