step.1
构建cost function的表达式的函数,其神经网络图如下,其θ1和θ2已经训练好。
输入X为5000*400的矩阵 (5000个元素,400个像素)
Y为5000*1的矩阵 其中有5000个结果,以1,2,3,4,5,6,7,9,10(代表0)为label
a1=[ones(size(X,1),1) X]; %为每个输入样品加入一个偏置单元 size(x,1) is the row number of x
%a1=5000*401
z2=a1*Theta1';
%z2=5000*25
a2=[ones(size(X,1),1) sigmoid(z2)];
%a2=5000*26
z3=a2*Theta2';
%z3=5000*10
h=sigmoid(z3);
%h=5000*10
%y=5000*1
i=0;
for i=1:10
J=J+sum(-(y==i).*log(h(:,i))-(1-(y==i)).*log(1-h(:,i)));
%y==i将y变成对应i以0,1构成的向量
%h为5000*10,列数代表不同数字 即不同输出层神经元的预测值
%y==i 对应为5000*1的向量,构建时将h分为10份 y*对应的h 使对应的神经元变成i的神经元.
%yingxiang
end;
J=(1/m)*J;