Bonjour,
en fait j'ai un réseau de neurones avec des entrées de taille 27.
J'applique 1000 entrées.
Ma sortie est un booléen. Une fois l'apprentissage effectué, je compare les sorties réelles avec les sorties attendues, les fonctions de transfert sont les logsig
J'ai plusieurs questions quant au paramétrage optimal du réseau:
1) Comment choisir efficacement le nombre de couches intermédiaires (avec le nombre de neurones sur chacune de ces couches)?
2) Comment choisir la fonction d'entrainement?
J'ai essayé la fonction d'entraînement trainlm, avec comme limite 10000 itérations, 3 couches cachées et 6 neurones sur chacune de ces couches (j'ai choisi au hasard).
Mais l'apprentissage se termine au bout de 3 itérations, avec un mu = 10^100 et un gradient à 10^-31. Pour finir, en sortie je n'ai que des valeurs proches de 0.5 (alors que je suis censé obtenir un booléen...)
A quoi cela est dû selon vous? Pouvez vous m'aider?
Merci d'avance
PS: voilà le bout de code que j'ai utilisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 hiddenSizes = [6 6 6]; trainFcn = 'trainlm'; net = feedforwardnet(hiddenSizes,trainFcn); net.trainParam.epochs = 10000; net.trainParam.min_grad = 0; net.trainParam.goal = 0; net.trainParam.mu_max = 10^100; net.trainParam.mu = 0.001; net.trainParam.max_fail = 100; net.layers{:}.transferFcn = 'logsig'; net_appris = train(net,entrees,sorties_desirees); sorties_test = net_appris(entrees);
Partager