Visualizationという機能が追加されました。単語や画像などを表現しているベクトルを可視化するためのツールです。公式サイトの説明ページを開いてみてください。Embeddingが3次元空間にきれいに可視化されていて、しかもそれをマウスで自由に動かせる様子が見て取れます。Visualizaationを使って可視化してみようと思います。記事で実装したコードをそのまま使います。今回の記事だけでコードが理解できない場合は、こちらの記事を読んでみてください。www.madopro.net上の記事では、小さなコーパスをもとに100次元の単語ベクトルを学習しました。そのときはmatplotlibで可視化して、こんな感じのグラフを出力したりしていました。visualizationを使うには、3つのステップが必要になります。単語ベクトルの変数を用意するログフォルダにモデルを保存する可視化時に使うメタデータ(ラベルや画像など)を指定するコード量にすると、GitHubの変更履歴を見てもらうと分かる通り、20行もないくらいです。3つの変更について、1つずつ見ていきます。単語ベクトル用の変数を用意この部分は前回のコードですでにカバーされています。このような形で単語ベクトルに使うtf.Variableを用意していました。1.0))具体的に単語ベクトルを学習する過程は前回の記事で解説しているので、今回省略します。ログフォルダにモデルを保存する通常モデルを保存するときと同様にtf.train.Saver()を使用してモデルを保存します。学習のイテレーションを回すごとに、そのステップ数を引数に与えてログフォルダに保存します。私のコードだと、こんな感じになります。epoch)saver.save()を使ってログフォルダにモデルを保存します。メタデータの用意メタデータの情報をログフォルダに保存ラベルなどのメタデータは、tsvファイルに保存しておき、projectorというクラスを使ってメタデータのtsvファイルをモデルファイルを関連付けます。具体的なコードは次のようになります。config)コード中のembedding.tensor_nameでメタデータを付加する変数(tf.Variable)名を、embedding.metadata_pathに各ベクトルのメタデータが保存されているtsvファイルを指定します。tsvファイルの作り方については次の節で説明するので、ここではとりあえずblog.metadata.tsvというファイル名だけを指定しておきます。ちなみに、ログフォルダを見てみるとprojector_config.pbtxtというファイルが保存されていて、中身は次のようになっています。上記コードは、単純に変数名とメタデータのtsvファイルをこのファイルに書き込んでいるだけなんですかね。"./corpus/model/blog.metadata.tsv"}メタデータ(単語ラベル)の用意メタデータのtsvは1行目がヘッダー、2行目から順にembeddingの情報を格納していきます。tf.Variableの順番とtsvのメタデータの順番は一致させる必要があります。今回の場合は、付加するメタデータは単語ラベルだけです。その場合は、tsvファイルのヘッダは省略できます。(詳細はこちら)というわけで、単語ID順に単語ラベルをtsvファイルに保存するコードを書きます。私はこんな感じで書きました。visualizationが使える準備が整いました!TensorBoardを起動して可視化してみるでは、さっそくTensorBoardを起動してみます。./corpus/logというようにモデルを保存したログフォルダを指定してtensorboardを起動し、http://localhost:6006/にアクセスします。embeddingが表示されています。マウスでドラッグすると、座標がぐるぐる回転します。画面の左下で、ベクトルをどのように3次元(もしくは2次元)に落とすかを設定できます。デフォルトはPCAです。画面上部のメニューにあるAというアイコンをクリックすると、点がラベルに置き換えられます*1。