redes reconocimiento proyectos prediccion neuronales neuronal imagenes fuente ejemplos convolucionales codigo artificiales aplicaciones matlab neural-network perceptron

matlab - reconocimiento - explicación del código de la red neuronal



redes neuronales convolucionales matlab (1)

La siguiente es una implementación de un Perceptron simple suministrado en un blog .

input = [0 0; 0 1; 1 0; 1 1]; numIn = 4; desired_out = [0;1;1;1]; bias = -1; coeff = 0.7; rand(''state'',sum(100*clock)); weights = -1*2.*rand(3,1); iterations = 10; for i = 1:iterations out = zeros(4,1); for j = 1:numIn y = bias*weights(1,1)+... input(j,1)*weights(2,1)+input(j,2)*weights(3,1); out(j) = 1/(1+exp(-y)); delta = desired_out(j)-out(j); weights(1,1) = weights(1,1)+coeff*bias*delta; weights(2,1) = weights(2,1)+coeff*input(j,1)*delta; weights(3,1) = weights(3,1)+coeff*input(j,2)*delta; end end

Tengo las siguientes preguntas,

(1) ¿cuál está entrenando datos aquí?

(2) ¿cuál es la información de prueba aquí?

(3) ¿cuáles son las etiquetas aquí?


los datos de entrenamiento son [0 0; 0 1; 1 0; 1 1] en la otra vista cada fila es un conjunto de datos de entrenamiento como sigue

>> input input = 0 0 0 1 1 0 1 1

y el objetivo es

desired_out = 0 1 1 1

por favor, piense acerca de las deseadas. Estas son sus etiquetas . Cada fila en los datos de entrenamiento (entrada) tiene una salida específica (etiqueta) en el conjunto binario {0,1} (porque este ejemplo para la implementación del circuito lógico OR.

en matlab puede usar o funcionar de la siguiente manera para una mayor comprensión:

>> or(0,0) ans = 0 >> or(1,0) ans = 1 >> or(0,1) ans = 1 >> or(1,1) ans = 1

Tenga en cuenta que su código no tiene ninguna prueba de entrenamiento y este código solo trata de obtener pesos y otros parámetros de perceptron pero puede agregar una prueba de entrenamiento a su código con solo un pequeño programa.

NumDataTest = 10 ; test=randi( [0 , 1] , [ NumDataTest , 2]) ... +(2*rand(NumDataTest,2)-1)/20;

entonces los datos de prueba serán similares a los siguientes

test = 1.0048 1.0197 0.0417 0.9864 -0.0180 1.0358 1.0052 1.0168 1.0463 0.9881 0.9787 0.0367 0.9624 -0.0239 0.0065 0.0404 1.0085 -0.0109 -0.0264 0.0429

para probar esta información puede usar su propio programa por el siguiente código:

for i=1:NumDataTest y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1); out(i) = 1/(1+exp(-y)); end

y finalmente:

table(test(:,1),test(:,2),out,''VariableNames'',{''input1'' ''input2'' ''output''})

salida es

input1 input2 output _________ _________ ________ 1.0048 1.0197 0.99994 0.041677 0.98637 0.97668 -0.017968 1.0358 0.97527 1.0052 1.0168 0.99994 1.0463 0.98814 0.99995 0.97875 0.036674 0.9741 0.96238 -0.023861 0.95926 0.0064527 0.040392 0.095577 1.0085 -0.010895 0.97118 -0.026367 0.042854 0.080808

Sección del código:

clc clear input = [0 0; 0 1; 1 0; 1 1]; numIn = 4; desired_out = [0;1;1;1]; bias = -1; coeff = 0.7; rand(''state'',sum(100*clock)); weights = -1*2.*rand(3,1); iterations = 100; for i = 1:iterations out = zeros(4,1); for j = 1:numIn y = bias*weights(1,1)+input(j,1)*weights(2,1)+input(j,2)*weights (3,1); out(j) = 1/(1+exp(-y)); delta = desired_out(j)-out(j); weights(1,1) = weights(1,1)+coeff*bias*delta; weights(2,1) = weights(2,1)+coeff*input(j,1)*delta; weights(3,1) = weights(3,1)+coeff*input(j,2)*delta; end end %% Test Section NumDataTest = 10 ; test=randi( [0 , 1] , [ NumDataTest , 2]) ... +(2*rand(NumDataTest,2)-1)/20; for i=1:NumDataTest y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1); out(i) = 1/(1+exp(-y)); end table(test(:,1),test(:,2),out,''VariableNames'',{''input1'' ''input2'' ''output''})

Espero que esto ayude y lo siento por mi inglés si es malo