Matlab - Extracción de variables pattern recognition en cada epoch

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 61 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de variables pattern recognition en cada epoch

Publicado por David (2 intervenciones) el 16/11/2018 22:36:08
Estoy realizanado un proyecto con redes neuronales en el que utilizo el tool de matlab PatternRecognition.

Me interesaría saber la forma de extraer el valor de la salida de la red en cada iteración (epoch) para así poder calcular la precisión del sistema comparándola con mi target, y así poder graficarlo y estudiar la evolución del mismo.

Adjunto el bloque de código:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
%% Definición de entrada y salida esperada
 
X_dia = xlsread('X_dia');                   %Datos de entrada
 
 
Y_esperada = xlsread('Salida_esperada');    %Datos de salida
 
yb = zeros(144,3);
 
for i=1:144
 yb(i,Y_esperada(i)) = 1;                   %Datos objetivo o deseados 
end
 
global variableGlobal;
variableGlobal = 1;
%% Entrenamiento de la función
 
x = X_dia';
t = yb';
 
 
trainFcn = 'trainlm';   % Levenberg-Marquardt backpropagation.
 
hiddenLayerSize = 10;
 
net = patternnet(hiddenLayerSize, trainFcn);
 
net.input.processFcns = {'removeconstantrows','mapminmax'};
 
 
% División de los datos en Training, Validation, Testing. En nuestro caso
% no llevamos a cabo tal división pues nos interesa estudiar el
% rendimiento del sistema, observando el número de epoch necesarias para
% que el sistema tenga error nulo, es decir, la diferencia entre la salida
% esperada y la obtenida sea nula.
% 
% Para una lista de todos los tipos de funciones de división de datos: help nndivision
%
% NOTA: ELEGIR SOLAMENTE UNO
 
net.divideFcn = 'dividerand';  % Divide data randomly
net.divideMode = 'sample';  % Divide up every sample
net.divideParam.trainRatio = 100/100;
net.divideParam.valRatio = 0/100;
net.divideParam.testRatio = 0/100;
 
net.trainParam.max_fail = 10;
net.trainParam.epochs = 2000;
net.performParam.normalization = 'standard';
 
 
 
% Elección de una función de representación del error
% Si queremos ver una lista de funciones de representación: help nnperformance
%
% NOTA: ELEGIR SOLAMENTE UNO
 
net.performFcn = 'mse';  % Error cuadrático medio.
 
 
% Elección de funciones de representación (Plot Functions)
% Para una lista con todos los tipos de funciones de representación: help nnplot
%
% NOTA: ELEGIR SOLAMENTE UNO
 
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...
    'plotconfusion','plotfit', 'plotroc'};
 
% Train the Network
[net,tr] = train(net,x,t);
 
% Test the Network
 
y = net(x);
e = gsubtract(t,y);
performance = perform(net,t,y);
tind = vec2ind(t);
yind = vec2ind(y);
 
percentErrors = sum(tind ~= yind)/numel(tind);
 
% Recálculo de Training, Validation y Test Performance
trainTargets = t .* tr.trainMask{1};
valTargets = t .* tr.valMask{1};
testTargets = t .* tr.testMask{1};
trainPerformance = perform(net,trainTargets,y)
valPerformance = perform(net,valTargets,y)
testPerformance = perform(net,testTargets,y)
 
 
% Visualización de la red
view(net)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder