私はKerasとニューラルネットワークを構築しました。 Tensorboardでそのデータを視覚化するので、私は利用しました:
keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
write_graph=True, write_images=True)
keras.io で説明されているように。コールバックを実行すると<keras.callbacks.TensorBoard at 0x7f9abb3898>
が表示されますが、フォルダ "Graph"にはファイルが表示されません。このコールバックの使用方法に何か問題がありますか?
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,
write_graph=True, write_images=True)
この行は、Callback Tensorboardオブジェクトを作成します。そのオブジェクトをキャプチャして、それをモデルのfit
関数に渡します。
tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
...
model.fit(...inputs and parameters..., callbacks=[tbCallBack])
このようにしてコールバックオブジェクトを関数に渡しました。これはトレーニング中に実行され、テンソルボードで使用できるファイルを出力します。
トレーニング中に作成されたファイルを視覚化したい場合は、端末で実行してください。
tensorboard --logdir path_to_current_dir/Graph
お役に立てれば !
これが TensorBoardコールバック の使い方です。
from keras.callbacks import TensorBoard
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0,
write_graph=True, write_images=False)
# define model
model.fit(X_train, Y_train,
batch_size=batch_size,
epochs=nb_Epoch,
validation_data=(X_test, Y_test),
shuffle=True,
callbacks=[tensorboard])
変化する
keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
write_graph=True, write_images=True)
に
tbCallBack = keras.callbacks.TensorBoard(log_dir='Graph', histogram_freq=0,
write_graph=True, write_images=True)
モデルを設定
tbCallback.set_model(model)
端末で実行する
tensorboard --logdir Graph/
Kerasライブラリを使用していて、テンソルボードを使用して精度のグラフやその他の変数を印刷したい場合は、以下の手順に従ってください。
ステップ1:以下のコマンドを使用して、テンソルボードをインポートするようにkerasコールバックライブラリを初期化します。
from keras.callbacks import TensorBoard
ステップ2: "model.fit()"コマンドの直前に、下記のコマンドをプログラムに含めます。
tensor_board = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
注: "./graph"を使用してください。それはあなたの現在の作業ディレクトリにグラフフォルダを生成します、 "/ graph"の使用を避けます。
ステップ3: "model.fit()"にTensorboardコールバックを含めるサンプルを以下に示します。
model.fit(X_train,y_train, batch_size=batch_size, epochs=nb_Epoch, verbose=1, validation_split=0.2,callbacks=[tensor_board])
手順4:コードを実行して、グラフフォルダが作業ディレクトリにあるかどうかを確認します。上記のコードが正しく機能する場合は、作業ディレクトリに "Graph"フォルダがあります。
ステップ5:作業ディレクトリでターミナルを開き、以下のコマンドを入力してください。
tensorboard --logdir ./Graph
ステップ6:今あなたのウェブブラウザを開いて下にアドレスを入力してください。
http://localhost:6006
入力すると、Tensorbaordページが開き、そこでさまざまな変数のグラフを見ることができます。
ここにいくつかのコードがあります:
K.set_learning_phase(1)
K.set_image_data_format('channels_last')
tb_callback = keras.callbacks.TensorBoard(
log_dir=log_path,
histogram_freq=2,
write_graph=True
)
tb_callback.set_model(model)
callbacks = []
callbacks.append(tb_callback)
# Train net:
history = model.fit(
[x_train],
[y_train, y_train_c],
batch_size=int(hype_space['batch_size']),
epochs=EPOCHS,
shuffle=True,
verbose=1,
callbacks=callbacks,
validation_data=([x_test], [y_test, y_test_coarse])
).history
# Test net:
K.set_learning_phase(0)
score = model.evaluate([x_test], [y_test, y_test_coarse], verbose=0)
基本的に、histogram_freq=2
はこのコールバックを呼び出すときに調整する最も重要なパラメータです。コールバックを呼び出すエポックの間隔を設定し、ディスク上のファイル数を減らすことを目標にしています。
それで、これがTensorBoardで一度見られた「ヒストグラム」タブの下でのトレーニング中の最後のたたみ込みの値の進化の視覚化の例です(そして私は「分布」タブが非常に似たチャートを含むことがわかりました。
あなたが文脈で完全な例を見たいと思うならば、あなたはこのオープンソースプロジェクトを参照することができます: https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100
いくつかあります。
まず、/Graph
ではなく./Graph
次に、TensorBoardコールバックを使用するときは、検証データを常に渡します。それがないと開始されないからです。
3つ目は、スカラサマリー以外のものを使用したい場合は、fit_generator
が機能しないため、fit
メソッドのみを使用してください。あるいは、コールバックをfit_generator
で動作するように書き直すこともできます。
コールバックを追加するには、それをmodel.fit(..., callbacks=your_list_of_callbacks)
に追加するだけです。
あなたはLosswise( https://losswise.com )をチェックするべきです、それはTensorboardより使いやすくて、そしていくつかの素晴らしい追加機能を持っているKerasのためのプラグインを持っています。 Losswiseでは、from losswise.libs import LosswiseKerasCallback
を使用してからcallback = LosswiseKerasCallback(tag='my fancy convnet 1')
を使用するだけでよくなります( https://docs.losswise.com/#keras-plugin を参照)。
google-colabを使用している場合、グラフの簡単な視覚化は次のようになります。
import tensorboardcolab as tb
tbc = tb.TensorBoardColab()
tensorboard = tb.TensorBoardColabCallback(tbc)
history = model.fit(x_train,# Features
y_train, # Target vector
batch_size=batch_size, # Number of observations per batch
epochs=epochs, # Number of epochs
callbacks=[early_stopping, tensorboard], # Early stopping
verbose=1, # Print description after each Epoch
validation_split=0.2, #used for validation set every each Epoch
validation_data=(x_test, y_test)) # Test data-set to evaluate the model in the end of training
log_dir='/Graph'
と書いたのですが、代わりに./Graph
を意味しましたか?あなたは今それを/home/user/Graph
に送りました。
Tensorboardコールバックを作成します。
from keras.callbacks import TensorBoard
from datetime import datetime
logDir = "./Graph/" + datetime.now().strftime("%Y%m%d-%H%M%S") + "/"
tb = TensorBoard(log_dir=logDir, histogram_freq=2, write_graph=True, write_images=True, write_grads=True)
Tensorboardコールバックをfit呼び出しに渡します。
history = model.fit(X_train, y_train, epochs=200, callbacks=[tb])
モデルを実行しているときにKerasエラーが発生した場合
"プレースホルダテンソルの値を入力する必要があります"
モデル作成前にKerasセッションをリセットしてみてください。
import keras.backend as K
K.clear_session()