MNIST手寫數字識別【Matlab神經網路工具箱】
阿新 • • 發佈:2019-01-29
MNIST手寫數字識別
Matlab程式碼:
%Neural Networks Codes will be run on this part tic %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc clear all pic1=imread('8.png'); pic1=rgb2gray(pic1); % pic=255-pic; [a,b]=size(pic1); for i=1:1:a for j=1:1:b if pic1(i,j)==0 up=i; break end end end for i=a:-1:1 for j=1:1:b if pic1(i,j)==0 down=i; break end end end for j=1:1:b for i=1:1:a if pic1(i,j)==0 left=j; break end end end for j=b:-1:1 for i=1:1:a if pic1(i,j)==0 right=j; break end end end pic=pic1(down:up,right:left); imshow(pic) pic=imresize(pic,[28 28]); % size(pic); pic1=1-double(reshape(pic,784,1))/255; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%載入待識別影象 image = loadMNISTImages('train-images'); % 載入樣本影象共60000,size(image)=784*60000 label = loadMNISTLabels('train-labels');%載入樣本影象對應標籤 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% label1=zeros(60000,10); j=0; for i=1:1:60000 j=label(i)+1; label1(i,j)=1; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=訓練樣本 PR=minmax(image); bpnet=newff(PR,[30 10],{'tansig', 'tansig'}, 'traingd', 'learngdm'); net.epoch=100; net.trainParam.epochs=10;%允許最大訓練步數 net.trainParam.goal=0.001; %訓練目標最小誤差0.001 net.trainParam.show=1; %每間隔100步顯示一次訓練結果 net.trainParam.lr=0.01; %學習速率 bpnet=train(bpnet,image,label1'); bpnet=sim(bpnet,pic1); shuzi=find(bpnet==max(bpnet))-1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% toc
利用自己在寫字板上寫的字測試:
如果不會下載MNIST 資料,可以訪問:我的GitHub:
裡面有不使用MATLAB工具箱的原始碼