% a) Generar el vector ordenado x con 50 valores en el [0, 5] (conjunto de entrenamiento) % aleatoriamente con distribuci�n uniforme. Obtener y = sen3(x). a = 5 * rand(1, 500); x = sort(a); y = sin(x) .^ 3; plot(x, y, '-b') % b) Entrenar una red neuronal con 20 neuronas en la capa intermedia para fitear % la funci�n. net = feedforwardnet(20); net = train(net, x, y); view(net) % c) Generar 50 nuevos valores para x (conjunto de test), aleatoriamente con % distribuci�n uniforme y obtener el resultado de simular la red obtenida para % dichos valores. a = 5 * rand(1, 2000); test = sort(a); yfit2 = sim(net, test); % d) Realizar una gr�fica donde se comparen ambas curvas. hold on; plot(x, yfit2, '-g') % e) Ensayar estrategias para obtener mejores resultados. % Correr cada caso en un script separado % 1- Incrremento del conjunto de datos. a = 5 * rand(1, 2000); x = sort(a); y = sin(x) .^ 3; plot(x, y, '-b') net = feedforwardnet(20); net = train(net, y, x); a = 5 * rand(1, 2000); test = sort(a); yfit = sim(net, test); hold on; plot(x, yfit2, '-g') % 2- Reentrenar la red para reducir el error. a = 5 * rand(1, 500); x = sort(a); y = sin(x) .^ 3; plot(x, y, '-b') net = feedforwardnet(20); [net, tr] = train(net, x, y); min_error = tr.best_vperf; best = net; for i = 1:10 net = init(net); [net, tr] = train(net, x, y); if (tr.best_vperf < min_error) min_error = tr.best_vperf; best = net; end; end; a = 5 * rand(1, 500); test = sort(a); yfit = sim(net, test); hold on; plot(x, yfit, '-g') % 3- Modificar el n�mero de neuronas en la capa intermedia. a = 5 * rand(1, 500); x = sort(a); y = sin(x) .^ 3; plot(x, y, '-b') min_error = 0; errores = zeros(10); best = net; for i = 1:10 net = feedforwardnet(4*i); [net, tr] = train(net, x, y); errores(i) = tr.best_vperf; if (tr.best_vperf < min_error) min_error = tr.best_vperf; best = net; end; end; a = 5 * rand(1, 500); test = sort(a); yfit = sim(best, test); hold on; plot(x, yfit, '-y') % REDES ADALINE a = 5 * rand(1, 1000); t = sort(a); y = sin(t) .^ 3; plot(t, y, '-b') t = con2seq(t); y = con2seq(y); inputDelays = 1:5; % delayed inputs to be used learning_rate = 0.01; % learning rate net = linearlayer(inputDelays,learning_rate); [net,Y,E] = adapt(net,t,y); t = seq2con(t); t = t{1}; Y = seq2con(Y); Y = Y{1}; hold on; plot(t, Y, '-r')