我正在寻找一种方法来替换或删除 python 的日志记录模块写入的最后一条消息。目标是在变量发生变化时记录它。如果变量再次更改,则应删除旧的日志消息并打印新的日志消息。
你好,
我正在将 pythons 的日志记录模块用于我目前正在从事的深度学习项目。由于某些 GPU 没有足够的内存来支持训练期间的默认批量大小,并且批量大小和可用于事先计算的实际内存使用量之间没有明显的联系,因此一旦发生运行时错误,我就会发现它,并且将批量大小减少一。这个过程可以重复很多次,我总是记录哪个批量大小不起作用,哪个将是下一个尝试。我不想拥有 10-30 条(或更多)这些消息,而是简单地删除最后一条并用新的替换它。
我已经查看了 python 日志记录文档,偶然发现了 LogRecord 对象,但是在尝试处理它时,似乎这个对象实际上并没有记录所有日志,而是在一个特定日志上保存了一些更多信息.
如果根本没有办法做到这一点,我将研究某种捆绑解决方案,如下所述:Python logging: bundle reoccurring messages
下面的代码显示了我要替换的日志消息。
非常感谢任何帮助。
training_not_successful = True
while training_not_successful:
try:
model.run_training(global_settings['epochs'],
train_loader,
test_loader,
global_settings['checkpoint_output_path'],
model_name,
global_settings['best_net_criterion'])
training_not_successful = False
except MemoryError:
logging.warning("Ran out of CUDA memory using batch size " + str(batch_size) +
". Trying again with batch size " + str(batch_size-1))
batch_size -= 1
train_loader, test_loader = get_train_test_loaders(
train_dataset_list,
test_dataset_list,
value_counts,
batch_size
)