本周编程作业的第一部分是使用one vs. all的方法做一个数字的分类问题。
在运行到oneVsAll函数的时候编译器提示了如下错误
error: fmincg: operator +: nonconformant arguments (op1 is 401x401, op2 is 160801x1)
这里错误的函数主体是
initial_theta=zeros(n+1);
options=optimset('GradObj','on','MaxIter',50);
for i=1:num_labels
c = i * ones(size(y));
[all_theta(i,:)]=fmincg(@(t)(lrCostFunction(t, X, (y==c), ...
lambda)), initial_theta, options);
end;
经过测试发现是zeros(n+1)出错了,这个式子的含义是生成一个(n+1)*(n+1)的零矩阵
但是此处我们需要的是一个n+1维的零向量。
经过更改: initial_theta=zeros(n+1,1);
程序正常运行。