2017-03-22 2 views
0

나는 옥타브에서 그라데이션 디센트를 구현하려고 시도 해왔다.문제 : 옥타브에서 그라디언트 디센트 구현하기

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 

난 정말이 코드로 잘못 무슨 일이 일어나고 있는지 말할 수 없다, 그것은 컴파일하고 실행하지만 자동-등급되고있어 그것이마다 실패 : 이것은 내가 지금까지 가지고있는 코드입니다.

편집 : 죄송합니다. 구체적이지 않았습니다. 나는 전체 루프가 아닌 GD의 한 단계를 구현하기로되어 있었다.

EDIT 2 : 여기있다. for 루프 내부의 내용 만 관련성이 있습니다.

EDIT 3 : 두 테스트 케이스가 모두 실패하므로 계산에 문제가 있습니다.

+0

이 질문은 [mcve]가 필요합니다. 그럼에도 불구하고 수학 문제에 대한 테스트 사례가 있습니까? 당신이 그 해답을 알고있는 몇 가지 간단한 도메인/방정식? 그라디언트 디센트는 반복적 인 과정 인 afaik입니다. 그러나 여기에는 루프가 없습니다 ... –

+0

죄송합니다. 구체적이지 않았습니다. 나는 GD의 단일 단계를 구현하기로되어 있었고, 루핑은 이미 내가 작업하고있는 파일에 미리 코딩되어 있었다. 테스트 케이스가 있지만 97 개의 다른 데이터 포인트가 있으므로 모든 데이터를 게시 할 여지가 없다고 생각합니다. – Sig

+0

미리 코딩 된 내용을 포함하여 전체 파일을 게시하십시오. 어떻게 그 문제를 재현 할 수 있습니까? –

답변

0

내 문제는 내가 거기에 어떤 이유로 루프를 추가했다는 것입니다.

관련 문제