Laboratorio Matlab: differenze tra le versioni
Da Bioingegneria Elettronica e Informatica.
(→Reti Neurali Feed-Forward) |
|||
Riga 2: | Riga 2: | ||
Esempio di applicazione di reti neurali artificiali. | Esempio di applicazione di reti neurali artificiali. | ||
+ | Creazione dataset. | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
clear all, close all | clear all, close all | ||
Riga 24: | Riga 25: | ||
save('dataset2.mat','x_train','t_train','x_test','t_test') | save('dataset2.mat','x_train','t_train','x_test','t_test') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Implementazione della rete neurale: | ||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | clear all, close all | ||
+ | |||
+ | load dataset2.mat | ||
+ | |||
+ | disp(['# Features: ',num2str(size(x_train,1))]) | ||
+ | disp(['# Samples: ',num2str(size(x_train,2))]) | ||
+ | |||
+ | %% Creazione rete | ||
+ | |||
+ | % Layers nascosti | ||
+ | % hiddenLayerSize = [20]; | ||
+ | % hiddenLayerSize = [50]; | ||
+ | hiddenLayerSize = [20,10]; | ||
+ | |||
+ | |||
+ | % Training Function - help nntrain | ||
+ | trainFcn = 'traingdx'; % traingda, traingdm, traingd | ||
+ | |||
+ | % Creazione rete | ||
+ | net = patternnet(hiddenLayerSize, trainFcn); | ||
+ | |||
+ | % Suddivisione dataset | ||
+ | net.divideFcn = 'dividerand'; | ||
+ | net.divideParam.trainRatio = 70/100; | ||
+ | net.divideParam.valRatio = 30/100; | ||
+ | net.divideParam.testRatio = 0/100; | ||
+ | |||
+ | % Criteri di stop | ||
+ | net.trainParam.epochs = 5000;; | ||
+ | %net.trainParam.max_fail = 20; | ||
+ | %net.trainParam.min_grad = 0;%10e-5; | ||
+ | |||
+ | % Funzione errore | ||
+ | net.performFcn = 'mse'; | ||
+ | |||
+ | % Funzioni di attivazione | ||
+ | net.layers{end}.transferFcn = 'logsig'; | ||
+ | |||
+ | % Visualizza rete | ||
+ | view(net) | ||
+ | |||
+ | %% Inizializzazione Rete | ||
+ | rng(0) | ||
+ | net = configure(net,x_train,t_train); | ||
+ | net = init(net); | ||
+ | init_LW = net.LW; | ||
+ | init_IW = net.IW; | ||
+ | |||
+ | %% Addestramento Rete | ||
+ | [net,tr] = train(net,x_train,t_train); | ||
+ | y_train = net(x_train); | ||
+ | |||
+ | % Plots vari | ||
+ | figure, plotperform(tr) | ||
+ | %figure, plottrainstate(tr) | ||
+ | %figure, ploterrhist(e) | ||
+ | figure, plotconfusion(t_train,y_train),title('Training Confusion Matrix') | ||
+ | %figure, plotroc(t,y) | ||
+ | |||
+ | %% Test Rete | ||
+ | |||
+ | y_test = net(x_test); | ||
+ | figure, plotconfusion(t_test,y_test),title('Test Confusion Matrix') | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> |
Versione delle 14:31, 21 mag 2019
Reti Neurali Feed-Forward
Esempio di applicazione di reti neurali artificiali.
Creazione dataset.
clear all, close all
load cancer_dataset.mat
x = cancerInputs;
t = cancerTargets(1,:);
temp = [x;t];
rng(0)
p = randperm(size(temp,2));
train_size = floor(size(temp,2)*.8);
p_train = p(1:train_size);
p_test = p(train_size+1:end);
x_train = temp(1:9,p_train);
t_train = temp(10,p_train);
x_test = temp(1:9,p_test);
t_test = temp(10,p_test);
save('dataset2.mat','x_train','t_train','x_test','t_test')
Implementazione della rete neurale:
clear all, close all
load dataset2.mat
disp(['# Features: ',num2str(size(x_train,1))])
disp(['# Samples: ',num2str(size(x_train,2))])
%% Creazione rete
% Layers nascosti
% hiddenLayerSize = [20];
% hiddenLayerSize = [50];
hiddenLayerSize = [20,10];
% Training Function - help nntrain
trainFcn = 'traingdx'; % traingda, traingdm, traingd
% Creazione rete
net = patternnet(hiddenLayerSize, trainFcn);
% Suddivisione dataset
net.divideFcn = 'dividerand';
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 30/100;
net.divideParam.testRatio = 0/100;
% Criteri di stop
net.trainParam.epochs = 5000;;
%net.trainParam.max_fail = 20;
%net.trainParam.min_grad = 0;%10e-5;
% Funzione errore
net.performFcn = 'mse';
% Funzioni di attivazione
net.layers{end}.transferFcn = 'logsig';
% Visualizza rete
view(net)
%% Inizializzazione Rete
rng(0)
net = configure(net,x_train,t_train);
net = init(net);
init_LW = net.LW;
init_IW = net.IW;
%% Addestramento Rete
[net,tr] = train(net,x_train,t_train);
y_train = net(x_train);
% Plots vari
figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
figure, plotconfusion(t_train,y_train),title('Training Confusion Matrix')
%figure, plotroc(t,y)
%% Test Rete
y_test = net(x_test);
figure, plotconfusion(t_test,y_test),title('Test Confusion Matrix')