Tensorflow2.0のTensorBoard:トレーニングプロセスの可視化
22255 ワード
文書ディレクトリ TensorBoardプロセス を使用具体的な流れ Step 1 Step 2 Step 3 Step 4 GraphおよびProfile情報を表示する 例 1、定義モデル及び訓練過程 2、TensorBoardを格納フォルダを作成する記録ファイル 3、実例化レコーダ(Traceオン) 4、指定するレコーダにパラメータを記録する .
TensorBoardプロセスの使用1、フォルダを作成してTensorBoardの記録ファイルを保存する. 2、実例化レコーダ; 3、パラメータ(一般にスカラー)を指定のレコーダに記録する; 4、TensorBoardのビジュアルインターフェースにアクセス.
具体的なプロセス
Step 1
コードディレクトリの下に./tensorboardなどのフォルダを作成します.
Step 2
インスタンスレコーダ:
Step 3
パラメータ(一般的にスカラー)を指定したレコーダに記録します.
tfを実行するたびに.summary.scalar()では、レコーダが記録ファイルに記録を書き込みます.
Step 4
トレーニングプロセスを可視化する場合は、コードディレクトリで端末を開き、次のように実行します.
そのうち‘E:PycharmcodeJupytertensorflow 2.0\My_NetTensorboardtensorboard'はTensorBoardレコードファイルを格納するフォルダパスです.
次に、ブラウザを使用してコマンドラインプログラムから出力されたWebサイトにアクセスします(一般的にはhttp://127.0.0.1:6006/)を使用してTensorBoardのビジュアルインタフェースにアクセスできます.
GraphとProfile情報の表示
その後、TensorBoardで「Profile」を選択し、各操作の所要時間を時間軸で確認できます.tfを使用すると.functionは計算図を作成し、「Graphs」をクリックして図構造を表示することもできます.
≪インスタンス|Instance|emdw≫
ここではMNISTのトレーニング手順を例に挙げます.
1、モデルと訓練過程を定義する
2、フォルダを作成してTensorBoardの記録ファイルを保存する
3、実例化記録器(トレースオン)
4、指定したレコーダにパラメータを記録する
TensorBoardプロセスの使用
具体的なプロセス
Step 1
コードディレクトリの下に./tensorboardなどのフォルダを作成します.
Step 2
インスタンスレコーダ:
summary_writer = tf.summary.create_file_writer('./tensorboard') #
Step 3
パラメータ(一般的にスカラー)を指定したレコーダに記録します.
summary_writer = tf.summary.create_file_writer('./tensorboard')
#
for batch_index in range(num_batches):
# ...( , batch loss )
with summary_writer.as_default(): #
tf.summary.scalar("loss", loss, step=batch_index) #
tfを実行するたびに.summary.scalar()では、レコーダが記録ファイルに記録を書き込みます.
Step 4
トレーニングプロセスを可視化する場合は、コードディレクトリで端末を開き、次のように実行します.
tensorboard --logdir=E:\Pycharm\code\Jupyter\tensorflow2.0\My_net\Tensorboard\tensorboard --host=127.0.0.1
そのうち‘E:PycharmcodeJupytertensorflow 2.0\My_NetTensorboardtensorboard'はTensorBoardレコードファイルを格納するフォルダパスです.
次に、ブラウザを使用してコマンドラインプログラムから出力されたWebサイトにアクセスします(一般的にはhttp://127.0.0.1:6006/)を使用してTensorBoardのビジュアルインタフェースにアクセスできます.
GraphとProfile情報の表示
tf.summary.trace_on(graph=True, profiler=True) # Trace, profile
#
with summary_writer.as_default():
tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=log_dir) # Trace
その後、TensorBoardで「Profile」を選択し、各操作の所要時間を時間軸で確認できます.tfを使用すると.functionは計算図を作成し、「Graphs」をクリックして図構造を表示することもできます.
≪インスタンス|Instance|emdw≫
ここではMNISTのトレーニング手順を例に挙げます.
1、モデルと訓練過程を定義する
import tensorflow as tf
import tensorflow.keras as keras
import tensorflow.keras.layers as layers
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Add a channels dimension
x_train = x_train[..., tf.newaxis].astype(np.float32)
x_test = x_test[..., tf.newaxis].astype(np.float32)
train_ds = tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(32)
test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(x_test.shape[0])
class MyModel(keras.Model):
# Set layers.
def __init__(self):
super(MyModel, self).__init__()
# Convolution Layer with 32 filters and a kernel size of 5.
self.conv1 = layers.Conv2D(32, kernel_size=5, activation=tf.nn.relu)
# Max Pooling (down-sampling) with kernel size of 2 and strides of 2.
self.maxpool1 = layers.MaxPool2D(2, strides=2)
# Convolution Layer with 64 filters and a kernel size of 3.
self.conv2 = layers.Conv2D(64, kernel_size=3, activation=tf.nn.relu)
# Max Pooling (down-sampling) with kernel size of 2 and strides of 2.
self.maxpool2 = layers.MaxPool2D(2, strides=2)
# Flatten the data to a 1-D vector for the fully connected layer.
self.flatten = layers.Flatten()
# Fully connected layer.
self.fc1 = layers.Dense(1024)
# Apply Dropout (if is_training is False, dropout is not applied).
self.dropout = layers.Dropout(rate=0.5)
# Output layer, class prediction.
self.out = layers.Dense(10)
# Set forward pass.
def call(self, x, is_training=False):
x = tf.reshape(x, [-1, 28, 28, 1])
x = self.conv1(x)
x = self.maxpool1(x)
x = self.conv2(x)
x = self.maxpool2(x)
x = self.flatten(x)
x = self.fc1(x)
x = self.dropout(x, training=is_training)
x = self.out(x)
if not is_training:
# tf cross entropy expect logits without softmax, so only
# apply softmax when not training.
x = tf.nn.softmax(x)
return x
model = MyModel()
loss_object = keras.losses.SparseCategoricalCrossentropy()
optimizer = keras.optimizers.Adam()
@tf.function
def train_step(images, labels):
with tf.GradientTape() as tape:
predictions = model(images)
loss = loss_object(labels, predictions)
loss = tf.reduce_mean(loss)
gradients = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
return loss
2、フォルダを作成してTensorBoardの記録ファイルを保存する
log_dir = 'tensorboard'
3、実例化記録器(トレースオン)
summary_writer = tf.summary.create_file_writer(log_dir) #
tf.summary.trace_on(profiler=True) # Trace( )
4、指定したレコーダにパラメータを記録する
EPOCHS = 5
for epoch in range(EPOCHS):
for images, labels in train_ds.take(10):
loss = train_step(images, labels)
with summary_writer.as_default(): #
tf.summary.scalar("loss", loss, step=epoch) #
with summary_writer.as_default():
tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=log_dir) # Trace ( )