深度学习之wandb的基本使用
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的基本使用相关推荐
- wandb(wb)(weights and biases): 深度学习轻量级可视化工具入门教程
参考文章:wandb: 深度学习轻量级可视化工具入门教程 这wandb有点蛋疼啊,说登录https://wandb.ai/authorize?signup=true获取API KEY,但貌似要梯子才能 ...
- wandb: 深度学习轻量级可视化工具入门教程
本文,就来给大家介绍一款新型的机器学习可视化工具,能够让人工智能研发过程变得更加简单明了. wandb: 深度学习轻量级可视化工具入门教程 引言 wandb 验证数据可视化 自然语言处理 重要工具 极 ...
- Wandb(Weights Biases) 深度学习轻量级可视化工具(Sweeps Artifacts)
wandb是Weights & Biases的缩写,是类似TensorBoard, visdom的一款可视化工具 是属于Python的,不是Pytorch的 wandb是最大的特点是能自动上传 ...
- 不用GPU,稀疏化也能加速你的YOLOv3深度学习模型
水木番 发自 凹非寺 来自|量子位 你还在为神经网络模型里的冗余信息烦恼吗? 或者手上只有CPU,对一些只能用昂贵的GPU建立的深度学习模型"望眼欲穿"吗? 最近,创业公司Neur ...
- 用深度学习实现异常检测/缺陷检测
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Mia Morton 编译:ronghuaiyang(新机器视觉) 导读 创建异常检测模型,实现 ...
- 【深度学习】神经网络中的蒸馏技术,从Softmax开始说起
作者:Sayak Paul 编译:ronghuaiyang 导读 从各个层次给大家讲解模型的知识蒸馏的相关内容,并通过实际的代码给大家进行演示. 本报告讨论了非常厉害模型优化技术 -- 知识 ...
- 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)
目录 0 前言 1.从githab上克隆yolov5代码 1.1 yolov5网络project克隆 1.2 项目代码结构的整体介绍 1.3 深度学习环境的配置和安装yolov5所需要的库 2. ...
- 给深度学习研究生的入门建议(未完待续ing)
诸神缄默不语-个人CSDN博文目录 本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议. 我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN.NLP.司法智能. (我的CSDN博文基本涵 ...
- TVM:成为深度学习领域的“Linux”
来源|wandb.ai 翻译|刘志勇 如你所知,PyTorch.TensorFlow.OneFlow等深度学习框架关注的重心是在GPU等硬件上训练模型,但要想将训练的模型部署到手机.物联网设备以及专用 ...
最新文章
- 获取java hashCode分布
- 深入理解JavaScript类数组
- Linux学习之CentOS(三十四)--配置域主DNS服务器
- SubclassWindow和SubclassDlgItem
- 机器学习入门--进阶资料和流程建议
- C语言实例第3期:在控制台打印出著名的杨辉三角
- eclipse插件svn账号信息清空重新登陆
- 【java】java wait 原理 synchronized ReentrantLock 唤醒顺序
- 深度学习如何有效攻克鲁棒性的场景重建难题?
- 怎样才能无需训练也能成为武林高手
- 华为副总裁的演讲,披露了华为在5G领域最新布局
- CSS的三种使用方法
- 休闲游戏:跑跑卡丁车在线玩!
- 全国计算机二级等级考试报名官网入口
- TLE(两行轨道数据)卫星行李数据格式解析
- python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组
- 【路径规划】FMM快速行进法船舶路径规划【含Matlab源码 2291期】
- [LLVM教程]LLVM之第一个语言前端
- 【人工智能】关于人类大脑模型的一些数学公式
- 第03章 Tableau基础操作