TensorBoard+Keras グラフの名前を変えてみる

昨日の

WindowsでTensorBoardを使う

の続きです。

TensorBoardにグラフ機能というのがあります。

上のメニューで、GRAPHSというのをクリックします。

わけのわからない図が出てきます。

 

図のところだけ拡大すると、こんな風。

TensorBoardの公式サイトに、チュートリアルの動画がありました。なかなかよい動画です。

余談ですが、いつも開発者の動画とかあると、見ちゃいますね。

結局、とあるプログラムがあったとして、その開発者以上にそのプログラムのことをわかっている人間はいないと思います。

 

で、この動画の中にもとりあえず、名前をつけてみることがよい!というお話がありましたので、名前をつけてみます。

名前をつけるやり方です。(非常に単純な話で申し訳ありませんが…。)

前述の記事内のコードに、名前をつける部分を足しただけです。

import keras
import tensorflow as tf

from keras.datasets import imdb
from keras.preprocessing import sequence

max_features = 2000  # number of words to consider as features
max_len = 500  # cut texts after this number of words (among top max_features most common words)

print('Loading data...')
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
print(len(x_train), 'train sequences')
print(len(x_test), 'test sequences')

print('Pad sequences (samples x time)')
x_train = sequence.pad_sequences(x_train, maxlen=max_len)
x_test = sequence.pad_sequences(x_test, maxlen=max_len)
print('x_train shape:', x_train.shape)
print('x_test shape:', x_test.shape)

from keras.models import Sequential
from keras import layers
from keras.optimizers import RMSprop

model = Sequential()
model.add(layers.Embedding(max_features,
                            128,
                           input_length=max_len
                           ))
model.add(layers.Conv1D(32, 7, activation='relu', name="first_layer"))
model.add(layers.MaxPooling1D(5))

with tf.name_scope("second_layer"):
    model.add(layers.Conv1D(32, 7, activation='relu',name="hogehoge"))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(1))

model.summary()

model.compile(optimizer=RMSprop(lr=1e-4),
              loss='binary_crossentropy',
              metrics=['acc'])


callbacks = [
    keras.callbacks.TensorBoard(
        log_dir = 'my_log_dir',
        histogram_freq = 1

    )
]
history = model.fit(x_train, y_train,
                    epochs=5,
                    batch_size=128,
                    validation_split=0.2,
                    callbacks=callbacks)

最初の畳み込みレイヤー・Conv1Dに”first_layer”という名前をつけたのと、次の畳み込みレイヤー・Conv1Dにグルーピングの名称”second_layer”という名前をつけ、レイヤー自体には”hogehoge”という名前をつけています。

ただ単に、私がグルーピングを試してみたかっただけです。

赤丸のように、名前が変わりましたね!

マウスを当てて、右上にプラスが出てくる部分は、ダブルクリックで開けます。

より、詳しい内容がわかります。

前のレイヤーからのデータが、hogehogeレイヤーの中で、畳み込みネットワークに入り、カーネル(畳み込みレイヤーのフィルターのことです)とか、Biasが作用している感じがわかると思います。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です