machine learning week4作业问题

本文解决了一个在实现oneVsAll方法时遇到的关于向量初始化的问题。具体而言,在数字分类任务中,作者使用了oneVsAll方法,并在调用fmincg函数时遇到了维度不匹配的错误。通过将初始化向量从(n+1)*(n+1)的零矩阵更改为(n+1)*1的零向量解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本周编程作业的第一部分是使用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);

程序正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值