俺的神经网络设计的大作业。
W1 = double(rand(64,64));
B1 = double(rand(64,1));
W2 = double(rand(1,64));
B2 = double(rand(1,1));
arf = 0.01;
kk = -0.07;
for train_num=1:4777
character = unidrnd(3);
num = unidrnd(24);
%read
I = imread(['F:\test\data',num2str(character),'\',num2str(num),'.png']);
I = imresize(I,[8,8]);
thresh = graythresh(I);
B = im2bw(I,thresh);
%figure(1);
%imshow(B);
tmp = B;
tmp = tmp(:);
%calculate
a1 = (W1*tmp)+B1;
for i = 1:64
a1(i,1) = 1./(1+exp(kk*a1(i,1)));
end
a2 = (W2*a1)+B2;
er = character*7-a2;
s2 = -2.0*1*er;
[r,c] = size(a1);
a1_ = a1;
for i=1:64
a1_(i,1) = (1-a1_(i,1))*a1_(i,1);
end
temp1 = zeros(8,8);
for i = 1:r
temp1(i,i) = a1_(i,1);
end
%update
s1 = temp1*(W2');
s1 = s1.*s2;
W2 = W2 - arf*(s2*(a1'));
B2 = B2 - arf*s2;
tmp';
W1 = W1 - arf*s1*(tmp');
B1 = B1 - arf*s1;
end
%test
As=0;
for test_num = 1:3
for num = 1:7
I = imread(['F:\test\testdata',num2str(test_num),'\',num2str(num),'.png']);
I = imresize(I,[8,8]);
thresh = graythresh(I);
B = im2bw(I,thresh);
tmp = B;
tmp = tmp(:);
a1 = (W1*tmp)+B1;
for i = 1:64
a1(i,1) = 1./(1+exp(kk*a1(i,1)));
end
a2 = (W2*a1)+B2;
if(abs(a2-test_num*7)<=3)
As=As+1;
end
end
end
As
rateofsuccess = As/21.0