如何将模型训练中断生成的多个tf.events文件接到一起

最近跑深度学习模型,就很邪门一直中断,跑到一半就停了然后报错 “cuda out of memory”,通过百度综合了很多大神的解决办法。

1. 处理 train.py 文件

在运行模型的地方,加上 torch.cuda.empty_cache() 删除一些不需要的变量。

原代码:

# Run model
pred = model(imgs)

修改之后:

# Run model
try:
    pred = model(imgs)
except RuntimeError as exception:
    if "out of memory" in str(exception):
        print("WARNING: out of memory")
        if hasattr(torch.cuda, 'empty_cache'):
            torch.cuda.empty_cache()
    else:
        raise exception

2. 处理 test.py 文件

每次都是卡在处理完一个epoch,测试这一大批数据在测试集上的表现结果,计算 Precision、Recall、mAP值和F1 这些指标的时候,显存就爆了,可能是没有设置 with torch.no_grad(),在相应的地方加上:
在这里插入图片描述

3. 整合多个events文件

全部加上后恢复训练,跑了几个又断了,不死心继续恢复训练,就这样跑完80个epochs,生成了三个events文件,利用 tensorboard 可视化之后,我想要的直方图也变成了这样:
在这里插入图片描述
实惨,这样根本没法看整体稀疏训练的效果。愁的我又去找度娘,看到的全是提取数据重新绘制。不好意思,本人水平实在是太低,不会玩这些高大上的东西,就想到一个懒办法——我要是能把这三个文件整合到一起,可视化整合之后的event文件不就好了吗。

在此又要吹一下这个Ubuntu系统,太好用了!!!!!百度找到这篇文章https://blog.csdn.net/u010555688/article/details/51374502,介绍 Ubuntu系统如何将两个文件合并为一个文件。我用的是第二个方法,使用 cat 命令将其中一个文件追加到(>>)另一个文件末尾。

我现在有三个events文件,如下图:
在这里插入图片描述

所以思路就是首先将最后生成的events文件追加到第二个文件末尾,再把第二个events文件追加到第一个文件末尾。回车结束战斗!
(1)首先将这三个events文件放入一个文件夹中,然后进入该文件夹

cd /root/data/my_train/runs/logs

(2)将第三个文件追加到第二个文件末尾

cat events.out.tfevents.1615376699.b4286b4d32d0.7927.0 >> events.out.tfevents.1615375949.b4286b4d32d0.7468.0

(3)将追加好的第二个events文件继续追加到第一个文件末尾

cat events.out.tfevents.1615375949.b4286b4d32d0.7468.0 >> events.out.tfevents.1615368994.b4286b4d32d0.3145.0

最后将整合后的第一个events文件利用 tensorboard可视化,结果如图:
在这里插入图片描述
终于完整了,开心撒花~

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值