?? charecg.m
字號:
% charecg.m
[alphabet,targets] = prodat;
P =alphabet; % alphabet = [ letterA, letterB, ..., letterZ ];
T = targets; % targets = eye(26);
[R,Q] = size(P);
S1 = 10;
[S2,Q] = size(T);
net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');
net.LW{2,1} = net.LW{2,1}*0.01;
net.b{2} = net.b{2}*0.01;
% 無噪聲字母識別網絡的訓練
net.performFcn = 'sse'; %執行函數為誤差平方和函數
net.trainParam.epochs=800; %最大訓練步長
net.trainParam.lr=0.01; %學習率
net.trainParam.lr_inc =1.05; %增長的學習率
net.trainParam.lr_dec =0.7;
net.trainParam.goal=0.1; %執行函數目標值
net.trainParam.mc =0.9; %附加動量因子
net.trainParam.min_grad=1e-10; %最小執行梯度
net.trainParam.show = 50;
P = alphabet;
T = targets;
[net,tr] = train(net,P,T);
pause % 按任意鍵繼續
% 具有噪聲的輸入矢量識別網絡的訓練
netn = net;
netn.trainParam.goal = 0.1; %目標誤差.
netn.trainParam.epochs = 300; %最大訓練步長.
for pass=1:10
fprintf('Pass = %.0f\n',pass);
T = [targets targets targets targets];
P = [alphabet, alphabet, ...
(alphabet + randn(R,Q)*0.1), ...
(alphabet + randn(R,Q)*0.2)];
[netn,tr] = train(netn,P,T);
end
pause % 按任意鍵繼續
% 再次用無噪聲字母訓練識別網絡
netn.trainParam.goal = 0.1; % 均方誤差目標.
netn.trainParam.epochs = 500; % 最大訓練步長
net.trainParam.show = 5; % 訓練中顯示的頻率
P = alphabet;
T = targets;
[netn,tr] = train(netn,P,T);
pause % 按任意鍵測試所訓練的網絡性能
% 測試所訓練的網絡性能
% ====================
noise_range = 0:.02:0.2;
max_test = 100;
network1 = [];
network2 = [];
T = targets;
% PERFORM THE TEST
for noiselevel = noise_range
fprintf('Testing networks with noise level of %.2f.\n',noiselevel);
errors1 = 0;
errors2 = 0;
for i=1:max_test
P = alphabet + randn(35,26)*noiselevel;
% TEST NETWORK 1
A = sim(net,P);
AA = compet(A);
errors1 = errors1 + sum(sum(abs(AA-T)))/2;
% TEST NETWORK 2
An = sim(netn,P);
AAn = compet(An);
errors2 = errors2 + sum(sum(abs(AAn-T)))/2;
echo off
end
% 100組26個矢量的平均誤差
network1 = [network1 errors1/26/100];
network2 = [network2 errors2/26/100];
end
echo on
pause % 按任意鍵顯示結果
% 顯示結果
% ========
clf
plot(noise_range,network1*100,'--',noise_range,network2*100);
grid
xlabel('Noise Level');
ylabel('Percentage of Recognition');
echo off
%三種情況下字母Y的表示情況
noisyY1 = alphabet(:,25)+randn(35,1) * 0.2;
figure(2);
plotchar(noisyY1);
noiseY2=alphabet(:,25)+randn(35,1)*0.1;
figure(3);
plotchar(noiseY2);
idealY=alphabet(:,25);
figure(4)
plotchar(idealY);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -