0

fminunc 正在返回'用户目标函数返回复杂;尝试一个新点...' 当 'iter-detailed' 开启时。我知道这是因为我的成本函数,由于某种原因,它返回了一个复杂的组件(准确地说,它返回了 J = NaN + NaNi)。关于它为什么这样做以及如何解决它的任何想法?PS我有一个非常大的特征集(大约1000个),它会不会超过最大值或精度?Ps 成本函数和梯度:

hyp = sigmoid(X * theta);
reg = (lambda/(2*m))*sum((theta(2:end).^2));

J = (1/m * sum((-y .* log(hyp)) - ((1-y) .* log(1-hyp)))) + reg;

grad(1) = (1/m * ((hyp-y)' * X(:,1)))';
grad(2:end) = (1/m * ((hyp-y)' * X(:,2:end)))' + (lambda/m * theta(2:end));
4

1 回答 1

1

任何你遇到奇怪的错误汇合的机会,其中:

  • sigmoid(X*theta) 是负数或大于一(当您在第 3 行获取它的日志时,这会给您带来复杂的部分);和
  • m 或 y 是 NaN 吗?

我以前没有注意到这一点,但是如果 NaN 与复数交互,你会得到一个“复数”NaN。

>> (1+2i) * nan

ans =

      NaN +    NaNi
于 2012-05-06T05:47:50.313 回答