wandb快速上手、使用心得(超好用的Tensorboard高替品)

news2024/11/26 7:29:22

这里写目录标题

    • 1 wandb介绍
    • 2 快速上手
    • 3 使用心得
      • 3.1 一张图展示两条线
      • 3.2 想要科学上网和wandb一起使用(离线使用)
      • 3.3 未完待续

1 wandb介绍

wandb地址:wandb
Wandb(Weights & Biases)是一个用于机器学习实验跟踪和可视化的工具和平台。它旨在帮助机器学习团队更好地组织、记录和共享实验过程和结果。相较于Tensorboard更加方便和智能。

1. 实验跟踪和版本控制: W&B可以记录和跟踪您的机器学习实验,包括超参数、指标、模型架构等。已用到
2. 可视化和分析: W&B提供丰富的可视化工具,可以直观地展示实验结果、训练曲线、指标趋势等。可以轻松地创建交互式图表、散点图、直方图等,以更好地理解和分析实验数据。已用到
3. 模型登记和部署: W&B可以帮助您登记和管理训练的模型,包括模型文件、权重和元数据。可以轻松地共享和部署模型,以便在其他环境中进行推理和评估。暂时没用到
4. 协作和共享: W&B提供团队协作和共享功能,可以邀请团队成员参与实验、查看结果,并进行讨论和反馈。还可以将实验和结果与其他人共享,使其可以在不同的环境中重现和使用您的工作。暂时没用到
5. 集成和兼容性: W&B与常用的机器学习框架(如PyTorch、TensorFlow、Scikit-learn等)以及其他工具(如Jupyter Notebook、Docker等)具有良好的集成和兼容性,可以无缝地与您的工作流程集成。已用到

上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 快速上手

参考链接:wandb quickstart

  1. 激活conda环境,安装wandb
pip install wandb 

如果下载太慢,可以使用以下命令从清华源下载

pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 登陆账号,输入API KEY
wandb login

如果报以下错误,请关闭VPN

wandb: Network error (ProxyError), entering retry loop.
wandb: W&B API key is configured. Use `wandb login --relogin` to force relogin
  1. 运行教程案例
import wandb
import random

# start a new wandb run to track this script
wandb.init(
    # set the wandb project where this run will be logged
    project="my-awesome-project",
    
    # track hyperparameters and run metadata
    config={
    "learning_rate": 0.02,
    "architecture": "CNN",
    "dataset": "CIFAR-100",
    "epochs": 10,
    }
)

# simulate training
epochs = 10
offset = random.random() / 5
for epoch in range(2, epochs):
    acc = 1 - 2 ** -epoch - random.random() / epoch - offset
    loss = 2 ** -epoch + random.random() / epoch + offset
    
    # log metrics to wandb
    wandb.log({"acc": acc, "loss": loss})
    
# [optional] finish the wandb run, necessary in notebooks
wandb.finish()
  1. 查看结果
    在这里插入图片描述
    运行的结果,系统GPU使用性能啥的,应有尽有:
    在这里插入图片描述

3 使用心得

3.1 一张图展示两条线

需求: 在一张图上展示训练的损失和验证损失,或者是训练的准确度和验证的准确度等

初步解决: 将每一步的结果都放在列表中,然后使用wandb.plot.line_series()画图上传到wandb服务器上。 不推荐,数据显示不友好

最终解决: 直接wandb.log上传结果,然后再wandb服务器上挑选数据重新生成新图

大致架构:

import wandb
# 初始化wandb
wandb.init(
    # set the wandb project where this run will be logged
    project="项目名称",
    
    # track hyperparameters and run metadata
    config={
    "learning_rate": lr,
    ...
    }
)

# 整体嵌入架构
epochs = 100
for i in range(epochs):
    net.train():
    train_total_loss = 0
    for ... in train_loader:
        ...
        ...
        train_total_loss += loss.item()
        train_total_acc += acc(....)
    train_acc = train_total_acc/len(train_loader)
    
    net.eval()
    val_total_loss = 0
    for ... in val_loader:
        ...
        ...
        val_total_loss += loss.item()
        val_total_acc += acc(...)
    val_acc = val_total_acc/len(val_loader)
    wandb.log({"train_loss":train_total_loss, "val_loss":val_total_loss, "train_acc": train_acc, "val_acc":val_acc})
wandb.finish()

生成图:
在这里插入图片描述

提醒: 每一个epoch中最好只使用一个wandb.log。因为我们每次只是记录纵坐标,横坐标是wandb自动记录wandb.log个数的。
不过也可以自行记录纵坐标,有需要可以留言,我会解答的。

3.2 想要科学上网和wandb一起使用(离线使用)

需求: 一般情况下挂VPN会导致wandb初始化出错,不能连接到wandb服务器进行数据同步上传,因此可以采用离线上传数据

解决: 使用os.environ["WANDB_API_KEY"] 先离线训练,等到训练完成之后,关闭VPN,使用wandb sync命令进行上传数据

大致架构:

import os
import wandb
os.environ["WANDB_API_KEY"] = '自己的API KEY' 
os.environ["WANDB_MODE"] = "offline"

在导包之后添加这两行代码,然后训练结束之后根据提示上传:
在这里插入图片描述

使用命令wandb sync 数据地址 上传数据

查看结果:
在这里插入图片描述
这些运行时间几秒钟的就是我离线上传的数据。

3.3 未完待续

虽然只是初步探索一下,但是发现它的功能真的是超级强大,相较于Tensoboard好用很多,后期用到其他功能也会持续更新的。
wandb操作手册: wandb tutorials

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧城市建设电气火灾智慧消防措施 安科瑞 许敏

1、引言 “经检测,发现管辖单位南通王子造纸企业二氧化氯装置发生二级警报,可能引发火灾,请立即出警。”日前,南通消防救援支队大数据平台DCS化工火源预警系统发出警报,大屏幕显示辖区企业南通王子造纸企业出现险情。D…

B站618“杀”疯了?UP主直播带货GMV连年破亿!

众多主流平台已经早早构建出较为完整的直播带货体系,而B站则是从去年双十一才宣布正式加入全平台直播带货,同时上线购物直播专区,到今年618年中购物大促,B站已经在大步向前摸索属于本平台的直播带货阵营。 一直以来B站带着二次元…

TC8:SOMEIPSRV_FORMAT_15-18

SOMEIPSRV_FORMAT_15: Instance ID field of the Type 1 Entry 目的 检查Type 1 Entry(Offer Service)的“Instance ID”字段 测试步骤 DUT CONFIGURE:启动具有下列信息的服务Service ID:SERVICE-ID-1Instance数量:1Tester:客户端-1发送SOME/IP Notification消息Entry T…

后端web开发之maven

这里写目录标题 介绍创建maven项目作用作用1作用2作用3 简介 依赖管理依赖配置依赖传递简介依赖传递的可视化快捷键 排除依赖依赖范围生命周期介绍执行流程 介绍 创建maven项目 注意 maven属于项目一级,所以在创建项目的时候 直接选择maven项目按照步骤创建即可&a…

Java Web基础面试题整理

1、什么是Servlet? 可以从两个方面去看Servlet: a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。 b、组件:服务器端用来处理客户端请求的组件,需要在we…

【2023,学点儿新Java-12】小结:阶段性复习 | Java学习书籍推荐(小白该读哪类Java书籍?有一定基础后,再去读哪类书籍?)

前情回顾: 【2023,学点儿新Java-11】基础案例练习:输出个人基础信息、输出心形 | Java中 制表符\t 和 换行符\n 的简单练习【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存…

【FPGA入门】第六篇、异步串口通信

目录 第一部分、相关知识 1、UART和RS232的区别 2、UART与USART的区别 3、全双工? 4、RS232通信协议 5、波特率 6、如何将外部异步信号变为内部同步信号? 7、什么时间点让FPGA去采集rx线上的数据? 第二部分、串口通信时序图 1、…

OWASP之SSRF服务器伪造请求

文章目录 一、SSRF定义二、形成原因1.提供请求功能2.地址没做限制 三、漏洞危害1.可以对服务器所在内网、本地进行端口扫描,获取一些服务的信息等2.目标网站本地敏感数据的读取3.内外网主机应用程序漏洞的利用4.内外网Web站点漏洞的利用 四、ssrf挖掘1.从WEB功能上寻…

SpringBoot相关知识

SpringBoot知识 1 SpringBoot 介绍及其使用原因 Spring Boot是一个用于创建独立的、基于Java的生产级别的应用程序的框架。它旨在简化Spring应用程序的开发过程,减少开发人员的配置工作,从而提高开发效率。 原因: (1) 简化开发:Spring Boot…

Hadoop(HA)

文章目录 1、HA 概述2、HDFS-HA 集群搭建3、HDFS-HA 核心问题4、HDFS-HA 手动模式4.1 环境准备4.2 规划集群4.3 配置 HDFS-HA 集群4.4 启动 HDFS-HA 集群 5、HDFS-HA 自动模式5.1 HDFS-HA 自动故障转移工作机制5.2 HDFS-HA 自动故障转移的集群规划5.3 配置 HDFS-HA 自动故障转移…

java企业工程项目管理系统平台源码

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统的设计与实现(基础版)

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统设计与实现 一、界面设计1.1安装pyqt51.2创建用户子窗体1.3创建管理员主窗体1.4创建管理员子窗体1.5创建系统登陆界面 二、环境搭建2.1pyqt5工具配置2.2mysql5.7安装 三、编程实现3.1初始化数据库3.2创建用户数据库sdk文件…

从零构建后端项目-配置Shiro+JWT

目录 Shiro和JWT技术 一、Shiro简介 什么是认证? 什么是授权? Shiro靠什么做认证与授权的? 二、JWT简介 JWT可以用在单点登录的系统中 JWT兼容更多的客户端 创建JwtUtil工具类 一、导入依赖库 二、定义密钥和过期时间 三、创…

强大的Kotlin也能搞定,测试利器MockK你不能不知道

目录 前言: 为什么需要MockK 关键字 Mock Kotlin的类时报错 静态方法如何Mock Jmockit MockK使用示例 普通使用 mockkObject mockkStatic mock private method Context Mock 遇到的一些小坑 最后 前言: MockK是一个强大且易于使用的Kotli…

爆肝整理,手机App接口测试大全指南,看这篇就够了...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 App和Web请求服务…

用prim和kruskal算法求最小生成树问题

最短网络 题目http://ybt.ssoier.cn:8088/problem_show.php?pid1350 #include<bits/stdc.h> using namespace std; const int N110; int w[N][N]; bool st[N]; int dist[N]; int n,res0; void prim() {memset(dist,0x3f,sizeof dist);dist[1]0;//初始化第一个点到自己…

优化回声消除过程:舒适噪声生成算法的应用与原理

在回声消除中&#xff0c;舒适噪声生成(Comfort Noise Generator&#xff0c;CNG)算法是一种常用的技术&#xff0c;它被用来减轻回声消除过程中产生的不适感和声音失真。舒适噪声生成算法通过添加特定的噪声信号来模拟人耳的听觉特性&#xff0c;以改善声音的自然度和舒适度。…

Cpp面试题:main函数执行以前,还会执行什么代码?

Cpp面试题:main函数执行以前&#xff0c;还会执行什么代码&#xff1f; 在 main() 函数执行之前和之后&#xff0c;C 程序可能会执行以下代码&#xff1a; 静态对象的构造函数&#xff1a;如果程序中有静态对象&#xff08;全局变量或静态成员变量&#xff09;&#xff0c;它们…

深入了解 vcruntime140 文件,从多方面解析vcruntime140

vcruntime140 是一个重要的文件&#xff0c;它在 Windows 系统中扮演着重要的角色。如果不小心缺失了&#xff0c;那么你的电脑就会出现问题&#xff0c;今天我们就来探讨一下vcruntime140这个文件&#xff0c;分别从背景和预防丢失&#xff0c;到如何修复丢失vcruntime140来给…

Elasticsearch(十)搜索---搜索匹配功能①--查询所有文档和term级别查询

一、前言 之前的学习我们已经了解了搜索的辅助功能&#xff0c;从这一章开始就是ES真正核心的功能&#xff0c;搜索。针对不同的数据类型&#xff0c;ES提供了很多搜索匹配功能&#xff1a;既有进行完全匹配的term搜索&#xff0c;也有按照范围匹配的range搜索&#xff1b;既有…