[PYTHON] L'inexactitude de Tensorflow était due à log (0)

J'ai récemment commencé à utiliser TensorFlow, mais pendant l'apprentissage, j'ai eu un problème en raison du fait que la précision a soudainement chuté et n'a pas changé. Si elle est inférieure, la précision diminuera soudainement à partir du 70e pas.

.
.
.
step:67 train:0.894584 test:0.756296
step:68 train:0.900654 test:0.756944
step:69 train:0.897526 test:0.758796
step:70 train:0.361345 test:0.333333
step:71 train:0.361345 test:0.333333
step:72 train:0.361345 test:0.333333
step:73 train:0.361345 test:0.333333
.
.
.

En regardant les poids, c'était comme suit.

(pdb) w1
array([[[[ nan,  nan,  nan, ...,  nan,  nan,  nan],
         [ nan,  nan,  nan, ...,  nan,  nan,  nan],
         [ nan,  nan,  nan, ...,  nan,  nan,  nan]],

        [[ nan,  nan,  nan, ...,  nan,  nan,  nan],
         [ nan,  nan,  nan, ...,  nan,  nan,  nan],
         [ nan,  nan,  nan, ...,  nan,  nan,  nan]], 
.
.
.

Puisqu'il s'agit de NaN, j'ai cherché "tensorflow nan" et j'ai trouvé une solution. http://stackoverflow.com/questions/33712178/tensorflow-nan-bug

La partie problème était la partie calcul de l'entropie croisée, qui était la suivante (y_conv est la probabilité de chaque étiquette par la fonction softmax).

python


cross_entropy = -tf.reduce_sum(labels*tf.log(y_conv))

Si cela reste tel quel, il deviendra log (0) et NaN peut sortir. Par conséquent, il a été résolu en normalisant à la gamme de 1e-10 à 1,0, puis en prenant le journal comme indiqué ci-dessous.

python


cross_entropy = -tf.reduce_sum(labels*tf.log(tf.clip_by_value(y_conv,1e-10,1.0)))

Il existe une fonction appelée ~~ tf.nn.softmax_cross_entropy_with_logits, et il semble préférable de l'utiliser comme suit. ~~ → Cette méthode n'a pas fonctionné.

Recommended Posts

L'inexactitude de Tensorflow était due à log (0)
Paramètre pour afficher le journal de l'exécution de cron
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Prenez le journal d'exécution du céleri
Supplément à l'explication de vscode
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
Branche conditionnelle en raison de l'existence d'un fichier de script shell
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
La première intelligence artificielle. Comment vérifier la version de Tensorflow installée.
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
L'histoire d'essayer de reconnecter le client
Le nombre de fermetures de magasins a-t-il augmenté en raison de l'influence du nouveau virus corona?
Script pour changer la description de fasta
Comment vérifier la version de Django
L'histoire de la mise en place de MeCab dans Ubuntu 16.04
Je suis abasourdi par le comportement de filter () en raison des différentes versions de Python
Probablement l'introduction la plus simple à TensorFlow
L'histoire du changement de pep8 en pycodestyle
Visualisez les données d'exportation du journal Piyo
P100-PCIE-16GB a été ajouté au GPU de Google Colab avant que je le sache
AtCoder AGC 041 C - J'étais accro à la recherche complète de Domino Quality
Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
Comment installer le framework d'apprentissage en profondeur Tensorflow 1.0 dans l'environnement Windows Anaconda
Comment calculer la volatilité d'une marque
Connectez-vous à un serveur distant avec SSH
Comment trouver la zone du diagramme de Boronoi
J'ai essayé de corriger la forme trapézoïdale de l'image
Modifiez le point décimal de la journalisation de, à.
La forme du tableau unidimensionnel de numpy était compliquée
Je souhaite personnaliser l'apparence de zabbix
Connectez-vous avec json en utilisant pygogo.
De l'introduction de pyethapp à l'exécution du contrat
Essayez de simuler le mouvement du système solaire
Histoire de passer de Pipenv à la poésie
Créez une commande pour obtenir le journal de travail
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
[Django] Essayons de clarifier la partie de Django qui était en quelque sorte à travers le test
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Modèle de script python pour lire le contenu du fichier
Comment obtenir le nombre de chiffres en Python
Un mémo pour comprendre visuellement l'axe des pandas.
Je veux grep le résultat de l'exécution de strace
J'ai essayé de résumer la forme de base de GPLVM
Ajoutez des informations au bas de la figure avec Matplotlib
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
Essayez de résoudre les problèmes / problèmes du "programmeur matriciel" (Chapitre 1)
L'idée de Tensorflow a appris de la fabrication de pommes de terre
La décision de scikit-learn Comment visualiser un modèle en bois
[python] option pour désactiver la sortie de click.progressbar
Décomposons les bases du code Python de TensorFlow
Envoyer les données du journal du serveur vers Splunk Cloud
Essayez d'estimer le nombre de likes sur Twitter
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi