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 : 두 테스트 케이스가 모두 실패하므로 계산에 문제가 있습니다.
이 질문은 [mcve]가 필요합니다. 그럼에도 불구하고 수학 문제에 대한 테스트 사례가 있습니까? 당신이 그 해답을 알고있는 몇 가지 간단한 도메인/방정식? 그라디언트 디센트는 반복적 인 과정 인 afaik입니다. 그러나 여기에는 루프가 없습니다 ... –
죄송합니다. 구체적이지 않았습니다. 나는 GD의 단일 단계를 구현하기로되어 있었고, 루핑은 이미 내가 작업하고있는 파일에 미리 코딩되어 있었다. 테스트 케이스가 있지만 97 개의 다른 데이터 포인트가 있으므로 모든 데이터를 게시 할 여지가 없다고 생각합니다. – Sig
미리 코딩 된 내용을 포함하여 전체 파일을 게시하십시오. 어떻게 그 문제를 재현 할 수 있습니까? –