2017-03-22 1 views
0

J'ai tenté d'implémenter la descente de gradient dans Octave. Ceci est le code que j'ai jusqu'à présent:Problème de descente de dégradé en octave

function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) 
    %GRADIENTDESCENT Performs gradient descent to learn theta 
    % theta = GRADIENTDESCENT(X, y, theta, alpha, num_iters) updates theta by 
    % taking num_iters gradient steps with learning rate alpha 

    % Initialize some useful values 
    m = length(y); % number of training examples 
    J_history = zeros(num_iters, 1); 

    for iter = 1:num_iters 

% ====================== YOUR CODE HERE ====================== 
% Instructions: Perform a single gradient step on the parameter vector 
%    theta. 
% 
% Hint: While debugging, it can be useful to print out the values 
%  of the cost function (computeCost) and gradient here. 
% 
theta 
X 
y 
theta' .* X 
for inner = 1:length(theta) 
    hypothesis = (X * theta - y)';   

    % Updating the parameters 

    temp0 = theta(1) - (alpha * (1/m) * hypothesis * X(:, 1)); 
    temp1 = theta(2) - (alpha * (1/m) * hypothesis * X(:, 2)); 
    theta(1) = temp0; 
    theta(2) = temp1; 

    J_history(iter) = computeCost(X, y, theta); 

    end 

    end 

Je ne peux pas vraiment dire ce qui ne va pas avec ce code, il compile et fonctionne, mais il est en cours d'auto-classé et il échoue à chaque fois.

EDIT: Désolé, n'était pas spécifique. J'étais censé mettre en œuvre une seule étape de GD, pas la boucle entière

EDIT 2: Voici la pleine chose. Seul le truc à l'intérieur de la boucle for est pertinent.

EDIT 3: Les deux cas de test échouent, il y a donc un problème avec mes calculs.

+0

Cette question nécessite un [mcve]. Peu importe, avez-vous un test pour le problème mathématique? Un simple domaine/équation dont vous connaissez la solution? Gradient descente est un processus itératif afaik, mais je ne vois pas de boucles ici ... –

+0

Désolé, n'était pas spécifique. Je devais implémenter une seule étape de GD, la boucle était déjà pré-codée dans le fichier sur lequel je travaille. J'ai un cas de test mais ses 97 points de données différents, donc je ne pense pas avoir de place pour poster tout cela. – Sig

+0

Postez tout le fichier, y compris les données pré-codées. Sinon, comment pourrions-nous reproduire le problème? –

Répondre

0

Je pense que mon problème est que j'ai eu une boucle supplémentaire pour une raison quelconque.