[PYTHON] Essayez la visualisation d'incorporation ajoutée dans TensorFlow 0.12

introduction

TensorFlow 0.12 a été publié l'autre jour. L'une de ses fonctions est la visualisation d'expressions intégrées. Cela permet d'analyser de manière interactive des données de grande dimension.

Ce qui suit est une visualisation de MNIST. L'image ci-dessous est une image fixe, mais sur le Site Officiel, c'est un mouvement gluant en 3 dimensions. Vous pouvez voir où il se trouve. embedding_visualization.png

Dans cet article, j'ai essayé d'utiliser la visualisation d'incorporation via la visualisation Word2vec. Tout d'abord, nous passerons de l'installation.

Installation

Tout d'abord, installez TensorFlow 0.12. Veuillez installer en vous référant à la page suivante.

Une fois l'installation terminée, nous étudierons la visualisation.

Apprenez le modèle

Commencez par cloner le référentiel, puis exécutez la commande suivante pour le déplacer:

$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow/models/embedding

Exécutez la commande suivante pour télécharger les données d'entraînement et d'évaluation:

$ wget http://mattmahoney.net/dc/text8.zip -O text8.zip
$ unzip text8.zip
$ wget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/word2vec/source-archive.zip
$ unzip -p source-archive.zip  word2vec/trunk/questions-words.txt > questions-words.txt
$ rm source-archive.zip

Maintenant que nous avons les données, apprenons le mot vecteur. Exécutez la commande suivante:

$ python word2vec_optimized.py --train_data=text8 --eval_data=questions-words.txt --save_path=/tmp/

Veuillez attendre environ une heure pour apprendre.

Afficher l'incorporation dans TensorBoard

Il s'affichera une fois l'apprentissage terminé. Tout d'abord, démarrez TensorBoard en exécutant la commande suivante:

$ tensorboard --logdir=/tmp/

Une fois démarré, il accédera à l'adresse spécifiée. Sélectionnez ensuite l'onglet Incorporation pour voir le vecteur visualisé.

Au fait, lorsque j'ai visualisé Word2vec, je ne comprenais pas pourquoi il y avait trop de vocabulaires.

Il semble que l'utilisation de Metadata vous permettra d'afficher le mot lui-même au lieu du mot ID.

Si rien ne s'affiche

Lorsque je sélectionne l'onglet Intégration, rien ne s'affiche dans le navigateur et l'erreur suivante peut apparaître sur la console. Ou plutôt il est sorti.

 File "/Users/user_name/venv/lib/python3.4/site-packages/tensorflow/tensorboard/plugins/projector/plugin.py", line 139, in configs
    run_path_pairs.append(('.', self.logdir))
AttributeError: 'dict_items' object has no attribute 'append'

Dans ce cas, changez la ligne 139 de ** tensorflow / tensorboard / plugins / projecteur / plugin.py ** du TensorFlow installé comme suit. Ensuite, relancez TensorBoard.

- run_path_pairs.append(('.', self.logdir))
+ run_path_pairs = [('.', self.logdir)]

Jouez avec

Après avoir sélectionné un certain nœud (mot), lorsque j'ai sélectionné "isoler 101 points", ce qui suit était affiché.

スクリーンショット 2016-11-30 17.50.31.png

Cela signifie que vous affichez 100 mots similaires au mot sélectionné. Pour mesurer la similitude ici, vous pouvez utiliser la similitude cosinus et la distance euclidienne. Vous pouvez également augmenter ou diminuer le nombre de mots affichés en spécifiant des voisins.

Vous pouvez également utiliser plusieurs algorithmes pour la visualisation. スクリーンショット 2016-11-30 18.18.57.png

La valeur par défaut est PCA, mais vous pouvez également utiliser T-SNE ou CUSTOM. L'image est affichée en 3D, mais elle peut également être affichée en 2D.

en conclusion

Ce serait encore plus intéressant si vous pouviez attribuer un mot comme étiquette. Cette fois, je vais me dépêcher et garder une introduction comme celle-ci.

référence

Recommended Posts

Essayez la visualisation d'incorporation ajoutée dans TensorFlow 0.12
Essayez Distributed Tensor Flow
Essayez d'incorporer Python dans un programme C ++ avec pybind11
Essayez gRPC en Python
Essayez 9 tranches en Python
Essayez la régression avec TensorFlow
Intégration du langage machine en langage C
Essayez l'apprentissage en profondeur avec TensorFlow
Clipping et normalisation dans TensorFlow
Essayez LINE Notify avec Python
Correction de la graine aléatoire avec TensorFlow
Implémentons Yuma dans Python 3
Essayez TensorFlow MNIST avec RNN