我试图计算以下内容。问题是我得到了正在计算的第三个项目的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
答案 0 :(得分:0)
htheta
在其中一对索引(3,2)
中等于1。
Jk3
使用值log(1 - hthetak)
计算,hthetak == 1
未定义。
同时,yk
的值为零,因为k=2
和y
永远不会等于2.
这使得产品-Inf
,你减去了这个,因此得到Inf
。
关于Infinity and NaN的MathWorks页面可能会有所帮助。