是否可以自定义 TensorFlow 的 Keras 进度条中出现的文本? 我目前的实现和用法如下(我使用 TensorFlow 2.8):
bar = tf.keras.utils.Progbar(target=n_train_samples)
step = 0
for x in dataset:
train_step(x)
step += 1
bar.update(step * batch_size)
当前行为是:
48/316 [===>..........................] - ETA: 1:19
但是,我想打印类似的东西:
TRAIN: 48/316 [===>..........................] - ETA: 1:19
编辑: 我也尝试在进度条之前打印文本,但随后它被覆盖了。例如。下面的代码:
import time
import tensorflow as tf
bar = tf.keras.utils.Progbar(target=10)
step = 0
for x in range(10):
time.sleep(0.2)
step += 1
print("TRAIN: ", end="")
bar.update(step)
返回以下输出:
10/10 [==============================] - 5s 501ms/step
我不想发生的事情: 我不想在多行上打印。进度条仍应在同一行上自行更新,只需预先附加“TRAIN”即可。所以,在时间步骤 #3,我不想:
TRAIN:
1/10 [==>...........................] - ETA: 4s
TRAIN:
2/10 [=====>........................] - ETA: 4s
TRAIN:
3/10 [========>.....................] - ETA: 3s
但我想要:
TRAIN: 3/10 [========>.....................] - ETA: 3s
解析代码:
import time import tensorflow as tf
bar = tf.keras.utils.Progbar(target=10) step = 0
for x in range(10):
print("\n TRAIN: ")
time.sleep(0.5)
step += 1
bar.update(step)
输出:
TRAIN:
1/10 [==>...........................] - ETA: 4s
TRAIN:
2/10 [=====>........................] - ETA: 4s
TRAIN:
3/10 [========>.....................] - ETA: 3s
TRAIN:
4/10 [===========>..................] - ETA: 3s
TRAIN:
5/10 [==============>...............] - ETA: 2s
TRAIN:
6/10 [=================>............] - ETA: 2s
TRAIN:
7/10 [====================>.........] - ETA: 1s
TRAIN:
8/10 [=======================>......] - ETA: 1s
TRAIN:
9/10 [==========================>...] - ETA: 0s
TRAIN:
10/10 [==============================] - 5s 503ms/step
只需打印一些前面有几个空格且末尾没有 LF 的东西。它会保存直到被覆盖,这可能永远不会。
now = datetime.datetime.now()
saveTime = now.strftime("%H:%M:%S") # userfriendly now
print(" saved at ", saveTime, end='', flush=True)
Epoch: 3
21/98 [=====>........................] - ETA: 16:04 - total_loss: 83.5692 - rec_loss: 0.0669 - perc_loss: 0.7274 - smooth_loss: 0.2739 - warping_loss: 0.6828 - psnr: 19.1418 - ssim: 0.5147 saved at 12:22:03
另外,请注意您的屏幕宽度。