我試圖計算以下內容。問題是我得到正在計算的第三個項目的inf。我該如何解決這個問題,以便不再存在inf值?MATLAB:解決inf結果
num_labels = 2;
htheta = [0.2 0.5; 0.8 0.1; 0.6 1; 0.7 0.4]
y = [1; 0; 0; 1;]
m = 4;
wes = ones(m, num_labels);
J = 0;
for k = 1:num_labels
for r = 1:m
if (htheta(r, k) < 0.5) && y(r, 1) ~= 0
wes(r, k) = 2;
else if (htheta(r, k) > 0.5) && y(r, 1) ~= 1
wes(r, k) = 4;
else wes(r, k) = 1;
end
end
end
yk = y == k;
hthetak = htheta(:, k);
Jk1 = (-yk .* log(hthetak) - (1 - yk) .* log(1 - hthetak));
Jk2 = (-yk .* log(hthetak) - (1 - yk) .* log(1 - hthetak)) .* wes(:, k);
Jk3 = 1/m * sum((-yk .* log(hthetak) - (1 - yk) .* log(1 - hthetak)) .* wes(:, k));
J = J + Jk3;
end
Jk1
Jk2
Jk3
J
好東西,你有你的答案和你的問題解決,但請留下一些信息給其他人會有類似的問題。在上次編輯中,您刪除了所有(_faulty_)代碼,因此現在沒有人能夠知道答案的內容。不要害羞地在代碼中留下你的代碼,即使有一些缺陷,也就是知識如何傳遞。 – Hoki 2014-10-04 18:15:19