Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


tutorial RNA em matlab, Exercícios de Computação Aplicada

Tutorial RNA Matlab usando a toolkit do software

Tipologia: Exercícios

2019

Compartilhado em 15/10/2019

sergio-custodio
sergio-custodio 🇧🇷

2

(1)

1 documento

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Trabalhando
com
o Toolbox
de
Redes
Neurais
Artificiais
do
Matlab
1.
Aprendendo
a
criar
e treinar
uma
rede
neural
Perceptron
de
múltiplas
camadas
(MLP)
A tabela 1 apresenta
as
funções
necessárias
para
criar
, treinar e
simular
uma
rede
neural
MLP
através
do
matlab
.
Tabela
1 -
Funções
matlab
-
toolbox
redes
neurais
-
MLP
Matlab
Função
Objetivo
newff
Criar
uma
rede
MLP
sim
Simular
uma
rede
MLP
train
Treinar
uma
rede
MLP
traingd
Realizar
treinamento
com
Backpropagation
padrão
trainlm
Realizar
treinamento
com
Levenberg-
Maquardt
logsig
Implementa
a
função
de
ativação
sigmoide
tansig
Implementa
a
função
tan
ge
nt
e
hiperbólica
purelin
Implementa
a
função
linear
Exemplo
1:
Neste
exemplo
iremos
aprender
com
criar
uma
rede
MLP
para
um
problema
simples
de
aproximação
de
função,
onde
teremos
uma
entrada
e
uma
saída
para
a
rede
neural
e 9
padrões
de
treino
. A
tabela
2
apresenta
os
padrões
de
entrada
(x)
e
saída
(y)
desejada
para
a
rede
aprender
a
função
y=f{x)
.
Tabela
2 -
padrões
para
treino
da
MLP
Entrada
x
Saída
y
desejada
o o
1 0.
84
2 0.
91
3 0.
14
4
-0
.
77
5
-0
.
96
6
-0
.
28
7 0.
66
8 0.
99
Na
janela
principal
do
matlab
digite
os
seguintes
comandos:
>>p =
[O
J 2 3 4 5 6 7 8] #
aqui
estamos
criando
o
vetor
p
de
entradas
desejadas
para
a
MLP
. O
vetor
de
entradas
deve
conter o
número
de
linhas
igual
ao
número
de
entradas
da
rede
(para
o
exemplo
temos
1
entrada)
e
número
de
colunas igual
ao
número
de
padrões
para
treinamento
(para
o
exemplo
temos
9
padrões)
» t =
[O
0.84
0.91
0.14-0. 77-0.96-0.28
0.66
0.99]
#
aqui
estamos
criando
o
vetor
de
saídas
desejadas
para
a
MLP
.
O vetor
de
saída
deve
conter
o
número
de
linhas
igual
ao
número
de
saídas
da
rede
(para
o
exemplo
temos
1
saída)
e
número
de
colunas
igual
ao
número
de
padrões
para
treinamento
(para
o
exemplo
temos
9
padrões)
>>plot(p,t,
'o1
#
aqui
estamos
mandando
plotar
a
entrada
p
versus
a
saída
t
apenas
para
visualização
da
função
que
a
rede terá
que
aprender
.
>> net = new/f(p,t,5) #
aqui
estamos
criando
uma
rede
MLP
com
o
nome
net.
Passamos
para
a
função
newjf o vetor
de
entrada p e o
vetor
de
saída
t.
Passamos
também
o
número
de
neurônios
que
desejamos
na
camada
escondida,
sendo
que
para
O
exemplo
escolhemos
5
neurônios.
Aqui
usaremos
os
parâmetros
default
para
a
topologia
da
rede
,
que
neste
caso
usa
a
função
tansig
em
todos
neurônios
da
camada
escondida
e a
função
purelin
no
neurônio
da
camada
de
saída.
0 algoritmo
de
treinamento
será
também
o
default
e
no
caso
será
usada
a
função
trainlm.
No
exemplo
2
veremos
como
modificar
estes
parâmetros
default.
pf2

Pré-visualização parcial do texto

Baixe tutorial RNA em matlab e outras Exercícios em PDF para Computação Aplicada, somente na Docsity!

Trabalhando com o Toolbox de Redes Neurais Artificiais do Matlab

1. Aprendendo a criar e treinar uma rede neural Perceptron de múltiplas camadas (MLP)

A tabela 1 apresenta as funções necessárias para criar, treinar e simular uma rede neural MLP através do matlab.

Tabela 1 - Funções matlab - toolbox redes neurais - MLP

Matlab Função Objetivo

newff Criar uma rede MLP

sim Simular uma rede MLP

train Treinar uma rede MLP

traingd Realizar treinamento com Backpropagation padrão

trainlm Realizar treinamento com Levenberg- Maquardt

logsig Implementa a função de ativação sigmoide

tansig Implementa a função tan ge nte hiperbólica

purelin Implementa a função linear

Exemplo 1: Neste exemplo iremos aprender com criar uma rede MLP para um problema simples de aproximação de

função, onde teremos uma entrada e uma saída para a rede neural e 9 padrões de treino. A tabela 2 apresenta os padrões

de entrada (x) e saída (y) desejada para a rede aprender a função y=f{x).

Tabela 2 - padrões para treino da MLP

Entrada x Saída y desejada

o o

1 0.^84

2 0.^91

3 0.^14

4 -0^.^77

5 -0^.^96

Na janela principal do matlab digite os seguintes comandos:

>>p = [O J 2 3 4 5 6 7 8] # aqui estamos criando o vetor p de entradas desejadas para a MLP. O vetor de entradas

deve conter o número de linhas igual ao número de entradas da rede (para o exemplo temos 1 entrada) e número de

colunas igual ao número de padrões para treinamento (para o exemplo temos 9 padrões)

» t = [O 0.84 0.91 0.14-0. 77-0.96-0.28 0.66 0.99] # aqui estamos criando o vetor de saídas desejadas para a MLP.

O vetor de saída deve conter o número de linhas igual ao número de saídas da rede (para o exemplo temos 1 saída) e

número de colunas igual ao número de padrões para treinamento (para o exemplo temos 9 padrões)

>>plot(p,t, 'o1 # aqui estamos mandando plotar a entrada p versus a saída t apenas para visualização da função que a

rede terá que aprender.

>> net = new/f(p,t,5) # aqui estamos criando uma rede MLP com o nome net. Passamos para a função newjf o vetor

de entrada p e o vetor de saída t. Passamos também o número de neurônios que desejamos na camada escondida, sendo

que para O exemplo escolhemos 5 neurônios. Aqui usaremos os parâmetros default para a topologia da rede, que neste

caso usa a função tansig em todos neurônios da camada escondida e a função purelin no neurônio da camada de saída.

0 algoritmo^ de^ treinamento^ será^ também^ o^ default^ e^ no^ caso^ será^ usada^ a^ função^ trainlm.^ No^ exemplo^2 veremos^ como

modificar estes parâmetros default.

Ao criannos a topologia da MLP ao qual denominamos de net, todos os pesos da rede recebem valores iniciais criados

de fonna aleatória dentro da faixa de • 1 a 1 (chamado processo de inicialização dos pesos da rede)

» a=sim(net,p) li aqui simularemos a rede net para os valores de entrada do vetor p e valores iniciais de pesos. Aqui

nossa rede ainda não foi treinada.

» plot(a, 'g*~ # plotando saída da rede

» hold # segurar na tela gráfico plotado anterionnente

» plot(t, 'o') ti plotar gráfico com saída desejada da rede junto com a saída da rede que plotarnos anterionnente.

» net=train(net, p,t) # aqui vamos iniciar o treinamento da nossa rede nel criada. Passamos para a função train a nossa rede net e os vetores de entrada p e saída I desejados. >> a=sim(net,p) # após treino realizado , vamos simular agora a saída da nossa rede para o vetor de entrada p. Agora a simulação é realizada com a MLP com os novos valores de pesos que foram ajustados durante processo de treino. >> plot(a, 'm+~

> > net./W{I,I}

>> net.b{J , l}

» net.b/2,1}

plotar gráfico de saída da rede neural junto com o gráfico que já tínhamos anterionnente.

Visualizar pesos entre camada de entrada e escondida

#Visualizar bias da camada escondida

Visualizar pesos entre camada escondida e de saída

>> netLW{l,I} #Visualizar bias camada de saída

Exemplo 2 (exercício): Para os mesmos dados do exemplo I treinar uma rede neural com 14 neurônios na camada escondida, função sigmóide (logsig) para estes neurônios e linear para o neurônio de saída. Verifique qual os pesos da camada intennediária após treinamento Obs : net = newff(p,t,5,{'tansig',' purelin'},'trainlm')default

Exemplo 3: Neste exemplo iremos aprender com criar uma rede MLP para um problema simples de aproximação de função, onde teremos duas entradas e uma saída para a rede neural e 9 padrões de treino. Neste caso aprenderemos como dividir a base de dados para treino, validação e teste. No exemplo I isto foi feito de fonna aleatória pela própria função newff. »p = /O J 2 3 4 5 6 7 8; O l 2 3 4 5 6 7 8/; #Criando vetor de entradas com 2 entradas e 9 padrões de treino » t = /O 0.84 0.91 0.14 -0. 77-0.96 -0.28 0.66 0.99/; #Criando vetor de saída com 1 saída e 9 padrões de treino »net = newff(p,t,8) #Criando rede MLP com 8 neurônios na camada escondida e outros parâmetros assumindo valor default >>net.divideFcn='divideind '; #Infonnando a rede net criada que iremos infonnar os índices do vetor de entrada e saída que deverão ser usados para criação do vetor de treino, validação e teste. >>net.divideParam.trainlnd=l:2:9; #índices para criar o vetor de treino a partir do vetor p e 1 ( I :2:9 - começa com o índice I e vai de dois em dois até chegar no índice 9) »net.divideParam. vallnd=2:2:9 ; #índices para criar o vetor de validação a partir do vetor p e 1 >> net.divideParam.test!nd=2:2:9; #índices para criar o vetor de teste a partir do vetor p e 1 >>net = train(net,p,t); #treinar rede net > >a = sim(net ,p) ; #Simular rede net