pytorch+tensorboard画已保存的loss数据

由于我训练的时候没有直接使用tensorboard,所以需要在保存的text文件中提取epoch、loss、IoU等值,然后在tensorboard中画出来。

一、text中提取数据(re.findall()函数)

如左下图所示,为我保存的训练数据(跟着霹雳啪啦源码修改滴,感谢霹雳啪啦!)

首先,我读取了txt文件,然后根据我想得到的数据,设置了正则化表达式(经过测试,text是全部内容,pattern里写文件里目标数据左右的构成,就能定位数据)。右图为findall()函数返回所有匹配的数字组成的列表(来自参考1)。

然后是我的提取程序:因为loss等是浮点格式,\d的话提取的是int的,所以我用的\S+提取,提取完又转化成了float形式(注意提取出来的是列表list),然后又转换了array形式;还有就是我理解的是:\d+,“+”的含义就是不定义提取几个数字,“\d{2}”这种的话就是确定2个;

with open('results20240417-212620.txt', 'r') as file:
    content = file.read()
    text = content
    pattern = r'epoch:\s+(\d+)+]'
    patternn = r'train_loss:\s+(\S+)'
    patternnn = r'global\s+correct:\s+(\S+)'
    IOU = r'mean\s+IoU:\s+(\S+)'

    # epoch = np.fromiter(list(map(int,re.findall(pattern,text))),dtype=int)
    epoch = list(map(int, re.findall(pattern, text)))
    train_loss = np.fromiter(list(map(float,re.findall(patternn,text))),dtype=float)
    global_correct = np.fromiter(list(map(float,re.findall(patternnn,text))),dtype=float)
    mean_IOU = np.fromiter(list(map(float,re.findall(IOU,text))),dtype=float)
二、数据放到tensorboard里

首先别忘了前面的这个:

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(log_dir="U-net", comment="Loss(U-net)")

第一部分里,我后来把提取出来的列表→数字→array形式就是因为 writer.add_scalar() 一直报错。而且scalar() 按照我的理解还得是一个一个进(因为我直接用数组它还报错0维),于是我就改成了下面这样:

for i in range(20):
    writer.add_scalar("U-net/loss", train_loss[i], i)
    writer.add_scalar("U-net/correct",global_correct[i] , i)
    writer.add_scalar("U-net/mIoU",mean_IOU[i], i)
writer.close()

终端(在虚拟环境下哟)输入:

tensorboard --logdir=D:\Program\pythonProject\unet\unet\U-net --port=6007
 #绝对路径感觉比文件夹名称好用,顺便改了一个端口(因为看别人都改,从众心理)

最后展示一下结果:(因为用cpu训练,就跑了20轮效果一般哈)

引用

[1]Python中的findall神器:从入门到精通 (baidu.com)

最后PS:文章仅代表个人意见,本人只是一个自动化专业的初步接触这方面的小菜鸟(自动化还是大二后来转的呢开始是材料的...) 不准确处望海涵+请批评指出~

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白菜yyyzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值