wandb 的基本使用

在深度学习训练网络的过程中,由于网络训练过程时间长,不可能一直关注训练中的每一轮结果,因此我们需要将训练过程中的结果可视化,留作后续的查看,从而确定训练过程是否出错。因此,我们需要使用到可视化工具,常用的几种可视化工具有:wandb(在线可视化)、tensorboard、这里主要介绍wandb的基本使用,tensorboard 的使用可参考我的另一篇博客 Tensorboard 的详细使用。

1、安装 wandb 库

pip install wandb

2、注册 wandb 账号

进入官网:https://wandb.ai/ 注册自己的账号,并依据提示,创建属于自己的 Team (相当于一个名称标识,后续需要用到),找到自己账户的 API密钥 ,记录下来。

3、登录 wandb 账号

# 在终端中输入 wandb login 进行登录,输入后,提示输入自身账号的API密钥,将上一步得到的密钥复制进去即可。
wandb loginPS D:\PythonProjects\Object-Detection> wandb login
wandb: Logging into wandb.ai. (Learn how to deploy a W&B server locally: https://wandb.me/wandb-server)
wandb: You can find your API key in your browser here: https://wandb.ai/authorize
wandb: Paste an API key from your profile and hit enter, or press ctrl+c to quit: 输入自己账号的密钥            # 此时登录成功,后续可以在代码中直接使用wandb库了。
wandb: Appending key for api.wandb.ai to your netrc file: C:\Users\LIULUSHENG/.netrc

4、基本使用

import wandb# 自定义一些本次训练的起始参数信息(数据集名称等等)(可选)
config = {"learning_rate": 0.001,"epochs": 100,"batch_size": 128,"image_size": 640
}# 初始化(必填)
wandb.init(entity="zkhy",  # wandb上对应的team名称(必填)project="test-project",  # 本次的项目名称(必填)name="hello",  # 本次实验的名称(可选,如果不设置,wandb会自动生成本次实验名称)tags=["yolo", "lanes-detection"],  # 本次实验的标签(可选)notes="this is a training exp",  # 本次实验的备注(可选)config=config,  # 本次实验的配置说明(可选)
)

5、常见用法

5.1 使用 wandb.log() 记录数值信息

import wandb# 设置一些本次训练的起始参数信息(数据集名称等等)
config = {"learning_rate": 0.001,"epochs": 100,"batch_size": 128,"image_size": 640
}# 初始化
wandb.init(project="test-project",  # 本次的项目名称entity="zkhy",  # wandb上对应的team名称name="hello",  # 本次实验的名称(可选,如果不设置,wandb会自动生成本次实验名称)tags=["yolo", "lanes-detection"],  # 本次实验的标签notes="this is a training exp",  # 本次实验的备注config=config,  # 本次实验的配置说明
)epochs = 10
# 通过wandb.log() 添加普通的数值图表信息
for i in range(epochs):# log中字典里的每一项都会生成一个图表信息wandb.log({"loss": random.randint(1, 6),"acc": random.randint(1, 100),"mAP.5": random.randint(10, 100)})

5.2 使用 wandb.Image() 记录图像信息

wandb.Image() 接收的是一个 numpy 格式的图像数据。

  • 法一:直接使用 numpy 格式的图像数据
import wandb
import matplotlib.pyplot as plt# 自定义一些本次训练的起始参数信息(数据集名称等等)(可选)
config = {"learning_rate": 0.001,"epochs": 100,"batch_size": 128,"image_size": 640
}# 初始化(必填)
wandb.init(entity="zkhy",  # wandb上对应的team名称(必填)project="test-project",  # 本次的项目名称(必填)name="hello",  # 本次实验的名称(可选,如果不设置,wandb会自动生成本次实验名称)tags=["yolo", "lanes-detection"],  # 本次实验的标签(可选)notes="this is a training exp",  # 本次实验的备注(可选)config=config,  # 本次实验的配置说明(可选)
)# 通过wandb.log() 和 wandb.Image() 添加图像信息
# 这里注意:由于上面代码已经使用了wandb.log(),并且迭代了10次,所以下面的wandb.log()会从10开始迭代5轮。
for i in range(5):# 读取图片,读取的图片是numpy格式数组(HWC)img = plt.imread("../../left_color.png")# print(type(img), img.shape)wandb.log({"images": wandb.Image(img),  # 接收的是一个numpy格式的数组"images_r": wandb.Image(img[:, :, 0])  # 切其中一个通道上传})

  • 法二:通过 matplotlib 绘制图像,再将绘制的图像转换成 numpy 格式的图像数据进行上传
import wandb
import numpy as np
from matplotlib.backends.backend_agg import FigureCanvasAgg
import matplotlib.pyplot as plt# 自定义一些本次训练的起始参数信息(数据集名称等等)(可选)
config = {"learning_rate": 0.001,"epochs": 100,"batch_size": 128,"image_size": 640
}# 初始化(必填)
wandb.init(entity="zkhy",  # wandb上对应的team名称(必填)project="test-project",  # 本次的项目名称(必填)name="hello",  # 本次实验的名称(可选,如果不设置,wandb会自动生成本次实验名称)tags=["yolo", "lanes-detection"],  # 本次实验的标签(可选)notes="this is a training exp",  # 本次实验的备注(可选)config=config,  # 本次实验的配置说明(可选)
)# 定义一个方法,将plt的图像转换为numpy格式数组
def plt_to_numpy(plt):canvas = FigureCanvasAgg(plt.gcf())# 绘制图像canvas.draw()# 获取图像尺寸w, h = canvas.get_width_height()# 解码string 得到argb图像buf = np.frombuffer(canvas.tostring_argb(), dtype=np.uint8)# 重构成w h 4(argb)图像buf.shape = (w, h, 4)# 转换为 RGBAbuf = np.roll(buf, 3, axis=2)# 得到 Image RGBA图像对象 (需要Image对象的同学到此为止就可以了)image = Image.frombytes("RGBA", (w, h), buf.tobytes())# 转换为numpy array rgba四通道数组image = np.asarray(image)# print(type(image))return image# 添加plt绘制的图像信息,上传到wandb
x = [1, 2, 3, 4, 5, 6]
y = [3, 2, 1, 10, 6, 9]
# 绘制折线图
plt.plot(x, y)
# 设置标题
plt.title("test plot chart")
# 将plt图像转换为numpy数组
to_numpy = plt_to_numpy(plt)# 上传图像到wandb
wandb.log({"plt": wandb.Image(to_numpy)
})

深度学习之wandb的基本使用相关推荐

  1. wandb(wb)(weights and biases): 深度学习轻量级可视化工具入门教程

    参考文章:wandb: 深度学习轻量级可视化工具入门教程 这wandb有点蛋疼啊,说登录https://wandb.ai/authorize?signup=true获取API KEY,但貌似要梯子才能 ...

  2. wandb: 深度学习轻量级可视化工具入门教程

    本文,就来给大家介绍一款新型的机器学习可视化工具,能够让人工智能研发过程变得更加简单明了. wandb: 深度学习轻量级可视化工具入门教程 引言 wandb 验证数据可视化 自然语言处理 重要工具 极 ...

  3. Wandb(Weights Biases) 深度学习轻量级可视化工具(Sweeps Artifacts)

    wandb是Weights & Biases的缩写,是类似TensorBoard, visdom的一款可视化工具 是属于Python的,不是Pytorch的 wandb是最大的特点是能自动上传 ...

  4. 不用GPU,稀疏化也能加速你的YOLOv3深度学习模型

    水木番 发自 凹非寺 来自|量子位 你还在为神经网络模型里的冗余信息烦恼吗? 或者手上只有CPU,对一些只能用昂贵的GPU建立的深度学习模型"望眼欲穿"吗? 最近,创业公司Neur ...

  5. 用深度学习实现异常检测/缺陷检测

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Mia Morton 编译:ronghuaiyang(新机器视觉) 导读 创建异常检测模型,实现 ...

  6. 【深度学习】神经网络中的蒸馏技术,从Softmax开始说起

    作者:Sayak Paul      编译:ronghuaiyang 导读 从各个层次给大家讲解模型的知识蒸馏的相关内容,并通过实际的代码给大家进行演示. 本报告讨论了非常厉害模型优化技术 -- 知识 ...

  7. 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)

    目录 0    前言 1.从githab上克隆yolov5代码 1.1 yolov5网络project克隆 1.2 项目代码结构的整体介绍 1.3 深度学习环境的配置和安装yolov5所需要的库 2. ...

  8. 给深度学习研究生的入门建议(未完待续ing)

    诸神缄默不语-个人CSDN博文目录 本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议. 我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN.NLP.司法智能. (我的CSDN博文基本涵 ...

  9. TVM:成为深度学习领域的“Linux”

    来源|wandb.ai 翻译|刘志勇 如你所知,PyTorch.TensorFlow.OneFlow等深度学习框架关注的重心是在GPU等硬件上训练模型,但要想将训练的模型部署到手机.物联网设备以及专用 ...

最新文章

  1. 获取java hashCode分布
  2. 深入理解JavaScript类数组
  3. Linux学习之CentOS(三十四)--配置域主DNS服务器
  4. SubclassWindow和SubclassDlgItem
  5. 机器学习入门--进阶资料和流程建议
  6. C语言实例第3期:在控制台打印出著名的杨辉三角
  7. eclipse插件svn账号信息清空重新登陆
  8. 【java】java wait 原理 synchronized ReentrantLock 唤醒顺序
  9. 深度学习如何有效攻克鲁棒性的场景重建难题?
  10. 怎样才能无需训练也能成为武林高手
  11. 华为副总裁的演讲,披露了华为在5G领域最新布局
  12. CSS的三种使用方法
  13. 休闲游戏:跑跑卡丁车在线玩!
  14. 全国计算机二级等级考试报名官网入口
  15. TLE(两行轨道数据)卫星行李数据格式解析
  16. python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组
  17. 【路径规划】FMM快速行进法船舶路径规划【含Matlab源码 2291期】
  18. [LLVM教程]LLVM之第一个语言前端
  19. 【人工智能】关于人类大脑模型的一些数学公式
  20. 第03章 Tableau基础操作

热门文章

  1. 数据库建表遇到的问题
  2. 实战技术:分布式定时任务调度框架实践
  3. 苹果10亿美元收购英特尔手机基带业务 买下iPhone一颗“定芯丸”
  4. SpringBoot 集成Spring Boot Actuator 监控管理
  5. java程序画企鹅_JAVA编程实现添加多个企鹅信息到list中
  6. 7-32 验证“哥德巴赫猜想” (20 分)
  7. spring boot项目-上传头像
  8. 各种RNAseq原理
  9. Efuse--电编程熔丝
  10. Linux之tree命令生成文件目录结构