我在 google colab 中使用 tensorboard,如果我想跟蹤時代,它可以正常作業。但是,我想按批次跟蹤準確性/損失。我正在使用檔案https://www.tensorflow.org/tensorboard/get_started上的入門進行嘗試,但是如果我update_freq通過它更改引數update_freq="batch"不起作用。我已經在我的本地電腦上嘗試過,它可以作業。知道發生了什么嗎?
使用張量板 2.8.0 和張量流 2.8.0
代碼(在 colab 中運行)
%load_ext tensorboard
import tensorflow as tf
import datetime
!rm -rf ./logs/
mnist = tf.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
def create_model():
return tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
log_dir = "logs/fit_2/" datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, update_freq="batch")
model.fit(x=x_train,
y=y_train,
epochs=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
我嘗試使用整數,但它也不起作用。在我的本地計算機中,我沒有問題。
uj5u.com熱心網友回復:
TensorFlow 2.3 之后的變化使批處理級摘要成為Model.train_functionTensorBoard 回呼自身創建的一部分,而不是其本身。這導致許多小型模型的速度提高了 2 倍Model.fit,但它確實有副作用,即呼叫TensorBoard.on_train_batch_end(my_batch, my_metrics)自定義訓練回圈將不再記錄批處理級別的指標。
這個問題在其中一個 GitHub issue中討論過。
可以通過創建像LambdaCallback這樣的自定義回呼來解決問題。
我已經修改了代碼的最后一部分,以顯式添加 batch_loss 和 batch_accuracy 的標量值,以便tf.summary.scalar()在 tensorboard 日志中顯示。
代碼模塊如下:
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
from keras.callbacks import LambdaCallback
def batchOutput(batch, logs):
tf.summary.scalar('batch_loss', data=logs['loss'], step=batch)
tf.summary.scalar('batch_accuracy', data=logs['accuracy'], step=batch)
return batch
batchLogCallback = LambdaCallback(on_batch_end=batchOutput)
log_dir = "logs/fit_2/" datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='./logs', update_freq='batch')
model.fit(x=x_train,
y=y_train,
epochs=1,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback, batchLogCallback])
我在 Colab 中嘗試過,它也很有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450128.html
上一篇:LSTM模型預測結果不佳
