matlab:fminunc返回';用户目标函数返回复数;尝试一个新的观点…';
fminunc返回的是“用户目标函数返回的复数”;正在尝试一个新的点…“当“iter详细说明”打开时。我知道这是因为我的成本函数,出于某种原因,它返回一个复杂的组件(准确地说,它返回J=NaN+NaNi)。关于它为什么这样做,以及我如何修复它,有什么想法吗? 另外,我有一个非常大的功能集(大约1000个),这可能是因为它超过了最大值或精度? P.s.成本函数和梯度:matlab:fminunc返回';用户目标函数返回复数;尝试一个新的观点…';,matlab,machine-learning,Matlab,Machine Learning,fminunc返回的是“用户目标函数返回的复数”;正在尝试一个新的点…“当“iter详细说明”打开时。我知道这是因为我的成本函数,出于某种原因,它返回一个复杂的组件(准确地说,它返回J=NaN+NaNi)。关于它为什么这样做,以及我如何修复它,有什么想法吗? 另外,我有一个非常大的功能集(大约1000个),这可能是因为它超过了最大值或精度? P.s.成本函数和梯度: hyp = sigmoid(X * theta); reg = (lambda/(2*m))*sum((theta(2:end).
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));
有没有可能你碰到了一堆奇怪的虫子,其中:
- sigmoid(X*theta)为负值或大于1(当您在第3行记录它时,这将为您提供复杂的部分);及
- 不是m就是y是NaN
m为车组数,y为0或1。。所以第二部分是否定的,第一部分是否定的。。你知道一些事情。我正在读取一个图像文件,对于像素值,matlab返回的大多是负值。我需要找出范围,以便将其缩放为正值。我正在将RGB转换为Lab。这就是产生错误的地方。
>> (1+2i) * nan
ans =
NaN + NaNi