Tensorboard 回调不写训练指标
Tensorboard callback not writing the training metrics
当模型需要足够长的时间来推断时(即足够的参数和足够大的数据),并且当 profile_batch
开启时,TensorBoard
回调无法将训练指标写入日志事件(至少它们在 Tensorboard 中不可见)。
这里是用于获取失败的代码:
import os.path as op
import time
import numpy as np
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.layers import Conv2D, Input
from tensorflow.keras.models import Model
size = 512
im = Input((size, size, 1))
im_conv = Conv2D(512, 3, padding='same', activation='relu')(im)
im_conv = Conv2D(1, 3, padding='same', activation='linear')(im_conv)
model = Model(im, im_conv)
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
data = np.random.rand(1, size, size, 1)
run_id = f'{int(time.time())}'
log_dir = op.join('logs', run_id)
tboard_cback = TensorBoard(
log_dir=log_dir,
histogram_freq=0,
write_graph=False,
write_images=False,
profile_batch=2,
)
model.fit(
x=data,
y=data,
validation_data=[data, data],
callbacks=[tboard_cback,],
epochs=100,
verbose=0,
);
这是我的 Tensorboard 可视化:
我使用这个回调的方式有问题吗?
我在 GPU 上使用 Python 3.6.8、tensorflow
2.0.0(但在 CPU 上的行为相同)。
很明显,这是由于在回调中完成的分析。我们可以通过 profile_batch=0
禁用它。该问题正在进行中,请在此处关注:https://github.com/tensorflow/tensorboard/issues/2084
当模型需要足够长的时间来推断时(即足够的参数和足够大的数据),并且当 profile_batch
开启时,TensorBoard
回调无法将训练指标写入日志事件(至少它们在 Tensorboard 中不可见)。
这里是用于获取失败的代码:
import os.path as op
import time
import numpy as np
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.layers import Conv2D, Input
from tensorflow.keras.models import Model
size = 512
im = Input((size, size, 1))
im_conv = Conv2D(512, 3, padding='same', activation='relu')(im)
im_conv = Conv2D(1, 3, padding='same', activation='linear')(im_conv)
model = Model(im, im_conv)
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
data = np.random.rand(1, size, size, 1)
run_id = f'{int(time.time())}'
log_dir = op.join('logs', run_id)
tboard_cback = TensorBoard(
log_dir=log_dir,
histogram_freq=0,
write_graph=False,
write_images=False,
profile_batch=2,
)
model.fit(
x=data,
y=data,
validation_data=[data, data],
callbacks=[tboard_cback,],
epochs=100,
verbose=0,
);
这是我的 Tensorboard 可视化:
我使用这个回调的方式有问题吗?
我在 GPU 上使用 Python 3.6.8、tensorflow
2.0.0(但在 CPU 上的行为相同)。
很明显,这是由于在回调中完成的分析。我们可以通过 profile_batch=0
禁用它。该问题正在进行中,请在此处关注:https://github.com/tensorflow/tensorboard/issues/2084