matlab: fminunc 返回 'User objective function returned complex; trying a new point...'

标签 matlab machine-learning

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

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 吗?

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

>> (1+2i) * nan

ans =

      NaN +    NaNi

关于matlab: fminunc 返回 'User objective function returned complex; trying a new point...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467265/

相关文章:

matlab - 从数组中删除非唯一行

image-processing - convert_imageset.cpp 指南

python - sklearn中的GridSearchCV是否使用整个数据集训练模型?

python - 在列表字典上使用 TfidfVectorizer

matlab - 计算对数极坐标箱上的定向梯度直方图

matlab - 启动时运行 Matlab 脚本

Python 2字节二进制数组转换为整数或 float

c++ - 防止 MEX 文件在 MATLAB 中崩溃

pandas - 有没有办法使用 Pandas 或 Matplotlib 绘制 Pandas 时间序列密度?

machine-learning - 贝叶斯岭回归和自动相关性确定回归的区别?