训练模型必备技能 | Visdom工具的使用

弹性计算MySQLService Mesh

picture.image

在深度学习领域,模型训练是一个必须的过程,因此常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等。在Pytorch中,也有类似的TensorboardX,但据说其在张量数据加载的效率方面不如visdom。visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。

一、visdom可视化工具配置

1.1 安装visdom库


        
        
            

          pip install visdom
            

        
      

1.2 配置环境

要使用Visdom,需在终端开启监听命令


        
        
            

          python -m visdom.server
            

        
      

等待启动成功之后,命令窗口会返回一个网址,根据提示网址输入至浏览器中,eg(http://localhost:8097 ),最好使用chrome浏览器,安装结果及显示界面如下图

picture.image

picture.image

二.使用Visdom可视化神经网络的训练过程

2.1 监听train_loss的变化


        
        
            

          import visdom  
import  numpy as np  
import  time  
if \_\_name\_\_ == "\_\_main\_\_":  
    vis = visdom.Visdom(env=u'test')  # 指定env,默认端口port还是8097,host默认是'localhost',u表示将后面跟的字符串以unicode格式存储,那么可以识别中文字符  
    for step in range(1000):  
        loss = np.random.randn()  
        vis.line([loss],[step],win = 'train\_loss',update = 'append')  
        time.sleep(0.5)
            

        
      

picture.image

2.2 同时监听loss和Acc


        
        
            

          for step in range(100):  
    loss = abs(np.random.randn()) + 1  
    acc  = abs(np.random.randn())  
    vis.line([[loss, acc]],[step],win = 'train',update = 'append')  
    time.sleep(0.5)
            

        
      

picture.image

3.3 监听图像数据

需要注意的是,openCV按照BGR读取,而visdom 默认按照RGB显示,因此要进行通道转换


        
        
            

          img = cv2.imread('test.jpg')  
img = cv2.cvtColor(img, cv2.COLOR\_BGR2RGB)  
img = np.transpose(img, (2, 0, 1))  
vis.image(img, win='img')
            

        
      

picture.image

3.4 顺便记录个log


        
        
            

          def append\_log(visdom\_in, log\_win, info):  
    localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  
    line = "<b>[{0}]</b>: {1}".format(localtime, info)  
    visdom\_in.text(line, win=log\_win, append=True)  
  
if \_\_name\_\_ == "\_\_main\_\_":  
    vis = visdom.Visdom(env=u'test')  # 指定env,默认端口port还是8097,host默认是'localhost',u表示将后面跟的字符串以unicode格式存储,那么可以识别中文字符  
    text = vis.text('Hello World !')  
    for step in range(1000):  
        loss = abs(np.random.randn())  
        append\_log(vis, text, "loss:{}".format(loss))  
        time.sleep(0.1)
            

        
      

picture.image

visdom操作起来就是如此简单,所以有需求的小伙伴可以尝试一下。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生环境下的日志采集存储分析实践
云原生场景下,日志数据的规模和种类剧增,日志采集、加工、分析的多样性也大大增加。面对这些挑战,火山引擎基于超大规模下的 Kubernetes 日志实践孵化出了一套完整的日志采集、加工、查询、分析、消费的平台。本次主要分享了火山引擎云原生日志平台的相关实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论