Visualisez l'effet de l'image originale sur chaque nœud pour la reconnaissance des nombres manuscrits par le réseau neuronal.
[Note] C'est un algorithme que j'ai mis au point. Il n'a pas été vérifié avec quelle précision l'impact peut être mesuré.
Calculez la valeur de chaque nœud sur une source avec tous les pixels nuls comme base de comparaison.
Préparez l'image à évaluer. Mettez un seul pixel dans la source, calculez la valeur de chaque nœud et comparez la valeur avec quand tous sont 0. Faire cela pour tous les pixels est l'effet d'un pixel particulier sur une base nœud par nœud.
En imaginant cela, vous pouvez voir l'effet visuellement.
J'utiliserai l'exemple de "Deep Learning from scratch".
Puisque MNIST (données numériques manuscrites) est téléchargé à la première exécution, exécutez le script qui utilise MNIST.
$ cd ch03
$ python neuralnet_mnist.py
Accuracy:0.9352
Extrayez les deux fichiers suivants.
Exécutez le script suivant pour générer l'image.
Calculez le réseau neuronal et extrayez les nœuds du milieu. Puisque l'image change à peine avant et après l'application de «sigmoïde», «a1, a2» est écarté. Cependant, comme on le verra plus loin, «a3» est repris car il change considérablement avant et après l'application de «softmax».
def predict(x):
a1 = np.dot(x, W1) + b1
z1 = sigmoid(a1)
a2 = np.dot(z1, W2) + b2
z2 = sigmoid(a2)
a3 = np.dot(z2, W3) + b3
z3 = softmax(a3)
return z1, z2, a3, z3
[Ajout 2017.08.26] z1 est bon car l'influence est indépendante pour chaque pixel, mais il s'est avéré qu'il y a une influence entre les pixels après z2 et qu'elle n'est pas prise en compte. Nous réfléchissons à comment y remédier. Je l'ajouterai s'il y a des progrès.
Vérifiez l'image qui est entièrement blanche. Le nombre représente la probabilité calculée par "softmax".
S'il est plus clair que la couleur de fond (gris), il sera positif, s'il est sombre, il sera négatif et celui avec un grand positif global aura une probabilité plus élevée. Les plus et les moins s'annulent, il n'est donc pas toujours possible d'avoir une forme claire. Si vous passez par «softmax», vous perdrez la netteté et vous ne saurez pas ce que c'est.
Vérifiez les chiffres. Vous pouvez voir qu'il est évidé sous la forme de nombres de l'image entièrement blanche.
Je me suis référé à la façon d'écrire Python.
Recommended Posts