吴恩达老师的机器学习真的是非常好的入门课程,这次我想写写做神经网络feedforward propagation algorithm时遇到的小bug:

这是一个非常简单的神经网络,用来进行手写数字的识别,开始我的预测函数其中计算部分是这样的:
bias=1; %偏置
%第1,2,3层
a{1}=[bias*ones(m,1),X];
a{2}=a{1}*Theta1';
a{3}=[bias*ones(m,1),a{2}]*Theta2';
%输出
[~,p]=max(a{3}, [], 2);
然后发现错误率居然达到了40%,我真的摸不到头脑,然后看别人的代码才发现我没有加激活函数,或者说我的sigmoid是y=x; 下面是我改正之后:
bias=1; %偏置
%第1,2,3层
a{1}=[bias*ones(m,1),X];
a{2}=sigmoid(a{1}*Theta1');
a{3}=sigmoid([bias*ones(m,1),a{2}]*Theta2');
%输出
[~,p]=max(a{3}, [], 2);
这次debug感觉还不错。
本文分享了吴恩达机器学习课程中神经网络前馈算法的debug经验。作者在手写数字识别任务中,因未使用激活函数导致高错误率,通过添加sigmoid函数解决了问题。
441

被折叠的 条评论
为什么被折叠?



