TensorBoardで視覚化してみた

以下の記事で試してみたMLPを利用したテキスト分類について、TensorBoardで視覚化してみました。

Pythonによるスクレイピング&機械学習 開発テクニック「MLPでテキスト分類してみよう」(P.285)をやってみた

mlp3-classify.pyを変更する

TensorBoardに対応するようにスクリプトを変更します。「変更前1」の部分を「変更後1」の内容に、また、「変更前2」の部分を「変更後2」の内容にまるごと置き換え、mlp3-classify-tensorboard.pyという名前で保存します。

変更前1:

#data = json.load(open("./newstext/data-mini.json"))
data = json.load(open("./newstext/data.json"))

変更後1:

data = json.load(open("./newstext/data-mini.json"))
#data = json.load(open("./newstext/data.json"))

変更前2:

model = KerasClassifier(
    build_fn=build_model,
    nb_epoch=nb_epoch,
    batch_size=batch_size)
model.fit(X_train, Y_train)

# 予測 --- (※4)
y = model.predict(X_test)
ac_score = metrics.accuracy_score(Y_test, y)
cl_report = metrics.classification_report(Y_test, y)
print("正解率=", ac_score)
print("レポート=\n", cl_report)

変更後2:

# TensorBoard動作用
import keras.callbacks
import keras.backend.tensorflow_backend as KTF
import tensorflow as tf

Y_test_categorical = np_utils.to_categorical(Y_test, nb_classes)
old_session = KTF.get_session()

log_filepath = './log'

with tf.Graph().as_default():
    session = tf.Session('')
    KTF.set_session(session)
    KTF.set_learning_phase(1)
    
    # build model
    model = KerasClassifier(
        build_fn=build_model, 
        nb_epoch=nb_epoch, 
        batch_size=batch_size)
    
    tb_cb = keras.callbacks.TensorBoard(log_dir=log_filepath, histogram_freq=1)
    cbks = [tb_cb]
    
    model.fit(X_train, Y_train, callbacks=cbks, validation_data=(X_test, Y_test_categorical))
    
    # 予測 --- (※4)
    y = model.predict(X_test)
    ac_score = metrics.accuracy_score(Y_test, y)
    cl_report = metrics.classification_report(Y_test, y)
    print("正解率=", ac_score)
    print("レポート=\n", cl_report)

KTF.set_session(old_session)

mlp3-classify-tensorboard.pyを実行する

  1. 」をクリックし、「Anaconda3 (64-bit)」→「Anaconda Prompt」の順番にクリックします。
  2. 「conda info -e」と入力して、Enterキーを押します。

    「tensorflow」実行環境が作成されていることを確認します。
  3. 「activate tensorflow」と入力して、Enterキーを押します。
  4. 「D:」と入力して、Enterキーを押します。
  5. 「cd PythonScraping」と入力して、Enterキーを押します。
  6. 「cd src/ch6」と入力して、Enterキーを押します。
  7. 「mkdir log」と入力して、Enterキーを押します。
  8. 「python mlp3-classify-tensorboard.py」と入力して、Enterキーを押します。

    MLPによるテキスト分類が行われ、あわせてTensorBoardを表示するためのログデータが出力されます。
  9. 「tensorboard –logdir=log」と入力して、Enterキーを押します。

    TensorBoardが起動します。
  10. ブラウザで「http://localhost:6006」にアクセスします。
  11. 「GRAPHS」をクリックします。

    グラフが表示されますが、ニューラルネットワークの構造を理解するには余計なつながりが多いので、スッキリさせます。
  12. 「training」をクリックします。
  13. 「Remove from main graph」をクリックします。
  14. 「IsVariableInitialized[0-16]」の下の「」をクリックします。
  15. 「Remove from main graph」をクリックします。
  16. 余白部分をクリックします。

    グラフがスッキリしたと思います。
  17. 終了する場合は、手順9の画面でCtrlキーを押しながらCキーを押します。