Je dois implémenter un réseau neuronal monocanal ou un perceptron. Pour cela, j'ai 2 jeux de données de fichiers, un pour l'entrée et un pour la sortie. Je dois le faire dans matlab sans utiliser la boîte à outils neurale. Le format de 2 fichiers est donné ci-dessous.Erreurs de syntaxe matlab dans un réseau neuronal monocouche
In:
0.832 64.643
0.818 78.843
1.776 45.049
0.597 88.302
1.412 63.458
Out:
0 0 1
0 0 1
0 1 0
0 0 1
0 0 1
La sortie cible est « 1 pour une classe particulière que l'entrée correspondante appartient et » 0 pour 2 sorties restantes.
J'ai essayé de faire ceci, mais cela ne fonctionne pas pour moi.
load in.data
load out.data
x = in(:1);
y = in(:2);
learning rate = 0.2;
max_iteration = 50;
function result = calculateOutput(weights,x, y)
s = x*(weights(1) +weight(2) +weight(3));
if s>=0
result = 1
else:
result = -1
end
end
Count = length(x);
weights[0] = rand();
weights[1] = rand();
weights[2] = rand();
iter = 0;
do {
iter++;
globalerror = 0;
for(p=0; p<count;p++){
output = calculateoutput(weights,x[p],y[p]);
localerror = output[p] - output
weights[0]+= learningrate *localerror*x[p];
weights[1]+= learningrate *localerror*y[p];
weights[2]+= learningrate *localerror;
globalerror +=(localerror*localerror);
}
}while(globalerror != 0 && iter <= max_iteration);
Où est l'erreur dans cet algorithme ??
Je me réfère l'exemple donné dans le lien ci-dessous: -
Perceptron learning algorithm not converging to 0
Ce n'est pas un bogue d'algorithme (encore). C'est une erreur de syntaxe 'Count ≢ count' – msw
Il est clair à partir de votre code que vous n'êtes pas prêt à tenter une solution complète en une fois. Je vous recommande de commencer à partir d'un algorithme de pseudo-code et d'implémenter de manière incrémentielle et indépendante chaque étape. Si vous ne savez pas écrire une boucle ou incrémenter une variable, tenter d'écrire un programme complet n'est pas une expérience d'apprentissage productive. –