Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

perceptron multicapa, Guías, Proyectos, Investigaciones de Sistemas Integrados

programa y analisis del perceptron

Tipo: Guías, Proyectos, Investigaciones

2024/2025

Subido el 21/03/2025

sherlyn-arlette-rodriguez-leyva
sherlyn-arlette-rodriguez-leyva 🇲🇽

1 documento

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
pf3
pf4

Vista previa parcial del texto

¡Descarga perceptron multicapa y más Guías, Proyectos, Investigaciones en PDF de Sistemas Integrados solo en Docsity!

Objetivo : Que el alumno compruebe experimentalmente las capacidades de aproximación de funciones de un perceptrón

multicapa.

Desarrollo

1. Escriba un código en Matlab®, Python® o lenguajes de programación similares para implementar un perceptrón

multicapa con aprendizaje tipo retro propagación que aprenda:

a. El comportamiento de una XOR con dos entradas

b. La función f(x)=2cos(2x)-sen(x) con 0≤x≤2π

clc; clear; close all; % Entrenamiento X_xor = [0 0; 0 1; 1 0; 1 1]'; Y_xor = [0; 1; 1; 0]'; % red neuronal para XOR net_xor = feedforwardnet([5 3], 'trainlm'); net_xor.trainParam.epochs = 1000; net_xor.trainParam.goal = 1e-6; net_xor.trainParam.lr = 0.1; % Entrenamiento net_xor = train(net_xor, X_xor, Y_xor); % Evaluación Y_pred_xor = round(net_xor(X_xor)); error_xor = Y_xor - Y_pred_xor; mse_xor = mean(error_xor.^2); % Resultados figure; subplot(2,1,1); hold on; plot(1:length(error_xor), error_xor, 'ro-'); title('Error en XOR'); xlabel('Patrón'); ylabel('Error'); subplot(2,1,2); plot(1:length(Y_xor), Y_xor, 'bo-', 1:length(Y_pred_xor), Y_pred_xor, 'rx-'); title('Salida esperada vs Salida obtenida - XOR'); xlabel('Patrón'); ylabel('Salida'); legend('Esperado', 'Obtenido'); %% Parte 2: Aprendizaje de f(x) = 2cos(2x) - sin(x) % Datos de entrenamiento x = linspace(0, 2pi, 100); y = 2cos(2x) - sin(x); X_fun = x; Y_fun = y; % Configuración de la red neuronal para la función net_fun = feedforwardnet([10 5], 'trainlm'); net_fun.trainParam.epochs = 2000; net_fun.trainParam.goal = 1e-6; net_fun.trainParam.lr = 0.1; % Reorganizar datos para la red neuronal X_fun = reshape(X_fun, 1, []); Y_fun = reshape(Y_fun, 1, []); % Entrenamiento net_fun = train(net_fun, X_fun, Y_fun); % Evaluación x_test = linspace(0, 2pi, 200); y_test = 2cos(2x_test) - sin(x_test);

{[ 0.8855]} Pesos y Bias de la Red Función: {10x1 double} { 0x0 double} { 0x0 double} {10x1 double} { 5x1 double} {[ 0.4636]}

3. Verifique la capacidad de generalización de la red utilizando patrones similares a los del entrenamiento.

4. Reporte los resultados obtenidos en el punto anterior.

5. Conclusiones y observaciones.

La red neuronal logró aprender y aproximar los patrones de las funciones que se le dieron, tanto en el caso de XOR como

en la función matemática. Pero en ambas tareas hay pequeños errores. Para el caso de la función XOR, la red genera

resultados cercanos a los esperados, pero con algunas desviaciones en ciertos puntos. Esto se refleja en el gráfico de error,

donde se pueden ver diferencias en algunos patrones. Para la función matemática, la red hace una buena aproximación, ya

que la línea roja (aproximada) sigue de cerca la azul (real). Aun así, hay pequeñas diferencias que se notan en el gráfico de

error, aunque son muy pequeñas. En general, la red funciona bien, pero podría mejorarse