Re:ゼロから始めるML生活

ミスよりグズを嫌え

Tensorboardの実装を眺め、弄る

f:id:nogawanogawa:20190407073622p:plain
 

最近何かとお世話になっているTensorboardですが、こちらはGoogleからオープンソースで提供されているので、内容を自由に改変していくことができます。

※ライセンスはApache 2.0です

github.com

ということで、何を血迷ったか、Tensorboard自体の実装を弄ってみたいと思います。

機械学習とは直接関係無いですので、その点ご了承下さい。

Tensorboard実装雑感

中を見てる感じ、フロントエンドはTypeScript ( .ts ファイル)で書かれているようですね。

なるほど、TypeScript全くわからん

このへんで、すでに企画倒れの匂いがプンプンしてきましたが、ここは頑張ってやってみることにしましょう。

どうやら複雑な処理系はPythonで書いてあるようで、可視化の部分はTypeScriptの模様。 ビルドにはGoogleお手製のbazelが使われていて、bazelのコマンドを叩くとすぐビルドできるようになっています。

とりあえずビルド

何はともあれビルドしてみたいと思います。

ビルドの手順自体はご丁寧に記載されているので、こちらを参考に進めます。

https://github.com/tensorflow/tensorboard/blob/master/DEVELOPMENT.md

まず仮想環境の準備です。

$ virtualenv tf
$ source tf/bin/activate
(tf)$ pip install --upgrade pip
(tf)$ pip install tf-nightly

ビルドはこれだけ。これはちょっと時間かかります。

(tf)$ bazel build tensorboard

Embedding Projectorを起動させてみます。

この辺を見る感じ、Embedding ProjectorはTensorflow自体とは切り離して起動できるようです。

github.com

起動させるとこんな感じでした。

bazel run tensorboard/plugins/projector/vz_projector:devserver

そんでもってアクセスしてみます。

http://localhost:6006/index.html

f:id:nogawanogawa:20190407103658p:plain

いつもとは違いますね。 TensorBoard組み込みではなく公開されている方のEmbedding Projectorなんですね。

なんとなく書き換え

そこにhtmlのコードがあるんだから、適当にいじればいい感じに改編できるのでは?

とか思ったのでやってみます。 そんなに大々的に改変するとバグるので、簡単目にいじろうかと。

とりあえず、初回アクセス時に画面右側の検索窓に初期値を入れてみたいと思います。 なんとなく試行錯誤すること丸3日。←

起動すると"airport"で自動検索されるようになりましたとさ。

感想

TypeScriptっていうか、JavaScriptむっっっっっっず!! 自分はフロントエンドエンジニアは、しばらくなれそうにないっす。。。

何はともあれ、自分専用TensorBoardに書き換えられることはわかったので、めでたしめでたし。

TypeScriptを使えればもうちょっといろいろ拡張できそうですが、機械学習関係では無いのでこのへんで退散!