申请00号注册/网络seo是什么工作

申请00号注册,网络seo是什么工作,一个人能开发app吗,唐山哪家做网站好1、Tensorboard介绍 TensorBoard 是 TensorFlow 开发的一个可视化工具,用于帮助用户理解和调试机器学习模型的训练过程。尽管它最初是为 TensorFlow 设计的,但通过 PyTorch 的 torch.utils.tensorboard 模块,PyTorch 用户也可以方便地使用 Te…

1、Tensorboard介绍

  TensorBoard 是 TensorFlow 开发的一个可视化工具,用于帮助用户理解和调试机器学习模型的训练过程。尽管它最初是为 TensorFlow 设计的,但通过 PyTorch 的 torch.utils.tensorboard 模块,PyTorch 用户也可以方便地使用 TensorBoard 来记录和可视化模型训练中的各种数据(记得先安装tensorboard包,pytorch不自带)。
  SummaryWriter 是 PyTorch 中与 TensorBoard 交互的核心类,用于将数据写入日志文件,供 TensorBoard 解析和展示。

1.1 TensorBoard 的核心功能

  1. 训练指标可视化:
    记录损失(Loss)、准确率(Accuracy)、学习率(Learning Rate)等标量数据,并绘制曲线。

  2. 模型结构可视化:
    展示神经网络的计算图(模型结构)。

  3. 直方图和分布:
    可视化权重、梯度等张量的分布变化。

  4. 图像和音频:
    记录输入图像、生成样本或中间特征图。

  5. 嵌入向量可视化:
    对高维数据进行降维(如 PCA 或 t-SNE),展示在 2D/3D 空间中的分布。

1.2 SummaryWriter 的基本用法

  1. 初始化 SummaryWriter
from torch.utils.tensorboard import SummaryWriter# 创建 SummaryWriter 对象
writer = SummaryWriter(log_dir="runs/experiment_1")

参数:

  • log_dir:日志文件的保存路径(默认生成 runs/ 目录下的时间戳文件夹)。
  1. 记录标量数据(Scalars)
for epoch in range(100):loss = train_model()accuracy = calculate_accuracy()# 记录损失和准确率writer.add_scalar("Loss/train", loss, epoch)writer.add_scalar("Accuracy/train", accuracy, epoch)
  1. 记录图像(Images)
images, _ = next(iter(dataloader))
writer.add_images("Input_images", images, epoch)
  1. 记录直方图(Histograms)
weights = model.layer.weight.data
writer.add_histogram("Weights/layer", weights, epoch)
  1. 记录模型结构(Graph)
dummy_input = torch.randn(1, 3, 224, 224)  # 输入示例
writer.add_graph(model, dummy_input)
  1. 关闭 Writer
    writer.close()

1.3 启动 TensorBoard

在命令行中运行以下命令启动 TensorBoard:

tensorboard --logdir=runs/

然后通过浏览器访问 http://localhost:6006 查看可视化结果。

1.4 关键方法详解

常用方法

方法功能
add_scalar(tag, scalar_value, global_step)记录单个标量(如 Loss)
add_scalars(main_tag, tag_scalar_dict, global_step)记录多个标量(如 Loss 和 Accuracy)
add_image(tag, img_tensor, global_step)记录单张图像(格式需为 CxHxW)
add_images(tag, img_tensor, global_step)记录多张图像(格式为 NxCxHxW)
add_histogram(tag, values, global_step)记录张量分布直方图
add_graph(model, input_to_model)记录模型计算图

1.5 使用示例

import torch
from torch.utils.tensorboard import SummaryWriter# 初始化
writer = SummaryWriter("runs/demo")# 模拟训练过程
for epoch in range(100):# 假设训练逻辑loss = 1.0 / (epoch + 1)accuracy = 0.8 - 0.002 * epoch# 记录标量writer.add_scalar("Loss/train", loss, epoch)writer.add_scalar("Accuracy/train", accuracy, epoch)# 记录随机直方图weights = torch.randn(100)writer.add_histogram("Random_weights", weights, epoch)# 记录模型结构(假设 model 已定义)
dummy_input = torch.randn(1, 3, 224, 224)
writer.add_graph(model, dummy_input)# 关闭 Writer
writer.close()

1.6 注意事项

  1. 数据频率:
    避免在每个训练步(step)都记录大量数据,否则日志文件会过大。

  2. 实验管理:
    使用不同的 log_dir 区分不同实验(如 runs/exp1, runs/exp2)。

  3. 张量格式:
    图像数据需符合 CxHxW 格式(通道优先)。

  4. 性能影响:
    高频记录可能影响训练速度,需权衡监控需求与效率。

1.7 总结

  • TensorBoard 是模型训练可视化的标准工具,支持标量、图像、直方图等多种数据。
  • SummaryWriter 是 PyTorch 与 TensorBoard 的桥梁,通过简单的方法将数据写入日志。
  • 典型工作流程:
    记录数据 → 启动 TensorBoard → 浏览器查看 → 分析优化模型。

通过结合 TensorBoard 和 SummaryWriter,可以直观地监控模型训练过程,快速定位问题(如过拟合、梯度消失等),是深度学习开发中的必备技能。

2、Tensorboard实操

2.1 测试Tensorboard

2.1.1 add_scalar 函数介绍

  将单个标量值(如损失、准确率、学习率)记录到 TensorBoard 日志中,生成随时间/步骤变化的曲线图,便于可视化分析。

基本语法

add_scalar(tag, scalar_value, global_step=None, walltime=None)

参数说明
tag (字符串)

  • 标识数据的标签,决定在 TensorBoard 中的图表标题和分组。
  • 支持层级命名(如 “train/loss” 和 “val/loss”),TensorBoard 会自动按斜杠分组显示。

scalar_value (浮点数或标量张量)

  • 要记录的具体数值(如 loss.item() 或 accuracy)。

global_step (整数, 可选)

  • 当前记录的“步骤”,通常是迭代次数、epoch 数或自定义的计数器。
  • 作为曲线的横坐标,需确保递增以正确显示变化趋势。

walltime (浮点数, 可选)

  • 覆盖默认的时间戳(记录时刻),一般无需手动设置。

示例代码

from torch.utils.tensorboard import SummaryWriter# 创建 SummaryWriter,日志保存到 runs/test 目录
writer = SummaryWriter("runs/test")for i in range(100):# 记录 y=3x 的标量值:tag为"y=3x",值为3*i,步骤为iwriter.add_scalar("y=3x", 3 * i, i)writer.close()  # 关闭写入器,确保数据保存
  • tag=“y=3x”:在 TensorBoard 中生成名为 y=3x 的曲线图。
  • scalar_value=3*i:每次迭代记录的值(模拟 y=3x 函数)。
  • global_step=i:横轴表示迭代步骤,从 0 到 99 递增。

使用建议
命名规范

  • 使用清晰的层级标签(如 “train/loss”、“val/accuracy”)以便在 TensorBoard 中分类查看。

步骤连续性

  • global_step 应单调递增(如 0,1,2,…),避免跳跃或重复,否则图表可能混乱。

高效记录

  • 避免高频调用(如每个 batch 都记录),可每隔若干步记录一次以减少开销。

查看结果
运行后,使用以下命令启动 TensorBoard:

tensorboard --logdir=runs/test

在浏览器中打开提示的链接,即可看到 y=3x 的线性增长曲线。

注意事项

  • 路径引号问题:确保路径字符串使用英文引号(如 “runs/test”),而非中文引号“”或‘’。
  • 及时关闭 Writer:调用 writer.close() 或在 with 块中使用,防止日志未保存。

相关方法

add_scalars:同时记录多个标量(如训练和验证损失对比):

writer.add_scalars("loss", {"train": train_loss, "val": val_loss}, epoch)

其他记录方法:如 add_image(记录图像)、add_histogram(权重分布)等,用于多维数据可视化。

2.1.2 实例

from torch.utils.tensorboard import SummaryWriter# 创建一个 SummaryWriter 对象
writer = SummaryWriter("runs/test")
for i in range(100):writer.add_scalar("y=3x", 3*i, i)
writer.close()

  运行上述程序之后,会发现程序所在目录中多了个文件夹runs,文件夹runs中有一个文件夹test:

在这里插入图片描述
  如果想要查看可视化结果,可以在终端执行命令:

tensorboard --logdir=runs/

在这里,logdir=事件文件所在的文件夹,在本例中为logdir=test(注意不是logdir = runs/test,只能是一级目录):

tensorboard --logdir=test     

运行之后,返回结果:

TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6006/ (Press CTRL+C to quit)

点击网址,即可查看可视化结果。

在这里插入图片描述

如果打开网址看不到你的数据结果,尝试把相对路径(test)换为绝对路径再重新运行并打开网址即可。
  另外,如果想要更改端口号(即上面网址中的6006),可以在终端执行以下命令:

tensorboard --logdir=test --port=6007 

2.2 读取图像数据

2.2.1 add_jmage函数介绍

  SummaryWriter 中的 .add_image 方法用于将图像数据记录到 TensorBoard 中,帮助用户可视化训练过程中的图像变化。

基本语法

add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')

参数说明:

  • tag (str): 图像的名称标识,用于在 TensorBoard 中分类显示。
  • img_tensor (Tensor): 图像张量,支持多种格式(需通过 dataformats 指定)。
  • global_step (int, 可选): 记录的步骤(如训练步数或 epoch),用于滑动查看图像变化。
  • walltime (float, 可选): 自定义时间戳,默认使用当前时间。
  • dataformats (str, 可选): 图像张量的格式,默认为 ‘CHW’(通道数 × 高度 × 宽度)。

图像张量格式
常见格式:

  • 单图像:(C, H, W)(默认)或 (H, W, C)(需设置 dataformats=‘HWC’)。
  • 灰度图:(1, H, W) 或 (H, W)(需设置 dataformats=‘HW’)。
  • 批量图像:使用 .add_images 或 torchvision.utils.make_grid 合并为网格后记录。

数据类型与范围:

  • 浮点型:数值范围应为 [0.0, 1.0]。
  • 整型(uint8):数值范围应为 [0, 255]。

使用步骤

  1. 导入库并创建 SummaryWriter:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
  1. 准备图像张量:

从随机数据生成:

img = torch.rand(3, 64, 64)  # 3通道,64x64,范围[0,1]

从文件加载并转换:

from PIL import Image
import numpy as np
import torch# 读取图像并转为张量
image = Image.open("example.jpg")
img_array = np.array(image)
if img_array.ndim == 3:img_tensor = torch.from_numpy(img_array.transpose(2, 0, 1))  # HWC → CHW
else:img_tensor = torch.from_numpy(img_array).unsqueeze(0)       # 灰度图添加通道维度
img_tensor = img_tensor.float() / 255.0  # 归一化到[0,1]
  1. 记录图像:
writer.add_image('my_image', img_tensor, global_step=0)
  1. 处理多张图像(网格):
import torchvisionimages = torch.randn(16, 3, 64, 64)        # 16张图像
grid = torchvision.utils.make_grid(images, nrow=4)  # 合并为4x4网格
writer.add_image('16_images_grid', grid, 0)

注意事项

  • 数据范围:若张量值超出 [0, 1] 或 [0, 255],需手动归一化:
img = (img - img.min()) / (img.max() - img.min())  # 归一化到[0,1]
  • 格式匹配:若张量形状与 dataformats 不匹配,TensorBoard 可能无法正确显示。
    例如:(H, W, C) 需设置 dataformats=‘HWC’。单通道灰度图 (H, W) 需设置 dataformats=‘HW’。
  • GPU 张量:若张量在 GPU 上,需先移至 CPU:
img_tensor = img_tensor.cpu()

示例代码

from torch.utils.tensorboard import SummaryWriter
import torchwriter = SummaryWriter()# 生成随机图像(3通道,64x64)
img = torch.rand(3, 64, 64)
writer.add_image('random_image', img, 0)# 记录多张图像的网格
images = torch.randn(16, 3, 64, 64)
grid = torchvision.utils.make_grid(images, nrow=4)
writer.add_image('image_grid', grid, 0)writer.close()

运行后,在命令行启动 TensorBoard:

tensorboard --logdir=runs

通过以上步骤,可有效利用 .add_image 监控模型输入、输出或中间特征图,提升训练过程的可解释性。

2.2.2 示例

  接下来使用SummaryWriter类中的.add_image()方法来读取图像数据。使用的图像为.jpg格式文件:

在这里插入图片描述

由于PIL中Image.open()打开的图片类型为<class ‘PIL.JpegImagePlugin.JpegImageFile’>,而方法add_image()中
img_tensor 参数必须为图像张量: (torch.Tensor, numpy.ndarray, or string/blobname)

        Args:tag (str): Data identifierimg_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image dataglobal_step (int): Global step value to recordwalltime (float): Optional override default walltime (time.time())seconds after epoch of eventdataformats (str): Image data format specification of the formCHW, HWC, HW, WH, etc.

因此,使用img_array = np.array(img_PIL)将PIL类型图像转换为numpy.ndarray类型图像。

>>> import numpy as np
>>> img_array = np.array(img_PIL)
>>> type(img_array)
<class 'numpy.ndarray'>
>>> img_array.shape
(512, 768, 3)

  此外,转换为numpy.ndarray类型图像之后,方法add_image()中参数dataformats (str, 可选): 图像张量的格式,默认为 ‘CHW’(通道数 × 高度 × 宽度)。而转换之后的格式为(H x W x C),因此需要设置该参数为dataformats=‘HWC’。

完整代码:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image# 创建一个 SummaryWriter 对象
writer = SummaryWriter("runs")
image_path = "hymenoptera_data/train/ants/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)writer.add_image("train", img_array, 1, dataformats='HWC')
for i in range(100):writer.add_scalar("y=3x", 3*i, i)
writer.close()

  在终端执行命令:

tensorboard --logdir=E:\my_pycharm_projects\project1\runs  

运行:

TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6006/ (Press CTRL+C to quit)

点击网址,即可查看可视化结果:
在这里插入图片描述

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

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

相关文章

数据结构篇:空间复杂度和时间复杂度

目录 1.前言&#xff1a; 1.1 学习感悟 1.2 数据结构的学习之路(初阶) 2.什么是数据结构和算法 2.1 数据结构和算法的关系 2.2 算法的重要性 2.3 如何衡量算法的好坏 3.时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 O() 4.空间复杂度 5. 常见的时间复杂度和…

泰坦军团携手顺网旗下电竞连锁品牌树呆熊 共创电竞新纪元

在电竞行业的浪潮中&#xff0c;品牌之间的战略合作愈发成为推动市场前行的重要动力。最近&#xff0c;电竞显示器领域领军品牌泰坦军团高层领导出席顺网旗下电竞连锁品牌树呆熊十周年盛典。会议现场&#xff0c;双方高层领导宣布泰坦军团与树呆熊正式达成战略合作伙伴关系。 在…

信号的产生和保存

信号的产生 信号就是操作系统对用户操作做出的反应&#xff0c;但它的本质就是往操作系统写入信号&#xff0c;这是由操作系统的结构决定的。通过修改比特位来告诉操作系统接收信号和传了几号信号。 也正是因为我们身为用户无法亲自修改内核数据&#xff0c;所以我们需要通过操…

深度学习技术与应用的未来展望:从基础理论到实际实现

深度学习作为人工智能领域的核心技术之一&#xff0c;近年来引起了极大的关注。它不仅在学术界带来了革命性的进展&#xff0c;也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理&#xff0c;再到强化学习和生成对抗网络&#xff08;GAN&#xff09;&#xff0c;深度…

蓝光三维扫描技术:汽车零部件检测的精准高效之选

——汽车方向盘配件、保险杠塑料件、钣金件检测项目 汽车制造工业的蓬勃发展&#xff0c;离不开强大的零部件制造体系作支撑。汽车零部件作为汽车工业的基础&#xff0c;其设计水平、制造工艺、质量控制手段逐渐与国际标准接轨&#xff0c;对于零部件面差、孔位、圆角、特征线…

六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 深入解析Vue3电商项目&#xff1a;TechStore全栈实践 一、项目架构设计 二、核心功能实现 三、组合式API深度实践 四、性能优化实践 五、项目扩展方向 六、开发经验总结…

不同机床对螺杆支撑座的要求有哪些不同?

螺杆支撑座是机械设备中重要的支撑部件&#xff0c;其选择直接影响到设备的稳定性和使用寿命&#xff0c;尤其是在机床中&#xff0c;不同的机床对螺杆支撑座的要求也是不同的。 1、精度&#xff1a;精密测量用的基准平面和精密机床机械的检验测量设备&#xff0c;需要使用高精…

Federated learning client selection algorithm based on gradient similarity阅读

基于梯度相似性的联邦学习客户端选择算法 Abstract 摘要introduction**背景****目的****结论****结果****讨论****思路** 链接&#xff1a;https://link.springer.com/article/10.1007/s10586-024-04846-0 三区 Abstract 摘要 联邦学习&#xff08;FL&#xff09;是一种创新的…

航天军工与金融行业 UE/UI 设计:跨越领域的体验革新之道

在数字化时代&#xff0c;用户体验&#xff08;UE&#xff09;和用户界面&#xff08;UI&#xff09;设计成为众多行业提升竞争力的关键因素。航天军工与金融行业虽业务性质差异巨大&#xff0c;但在 UE/UI 设计方面却面临着一些相似挑战&#xff0c;同时也在各自的探索中展现出…

【Git】--- 分支管理

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Git 本篇博客我们来介绍Git的一个重要功能之一 ---- 分支。我们将讲解关于分支的各种操作&#xff0c;以及如何帮助我们进行开发。 &#x1f3e0; 理解分支…

Vue3前端开发:组件化设计与状态管理

Vue3前端开发&#xff1a;组件化设计与状态管理 一、Vue3组件化设计 组件基本概念与特点 是一款流行的JavaScript框架&#xff0c;它支持组件化设计&#xff0c;这意味着我们可以将页面分解成多个独立的组件&#xff0c;每个组件负责一部分功能&#xff0c;通过组件的嵌套和复用…

动手学深度学习11.9. Adadelta-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;72 优化算法【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址&#xff1a;11.9. Adadelta —…

Android Audio基础(13)——audiomixer

在 Android 平台上&#xff0c;音频混合器 AudioMixer 主要用在 AudioFlinger 里&#xff0c;将多路音频源数据混音&#xff08;包括混音、音量处理、重采样及处理声道等&#xff09;。位于 framework 的音频处理模库 libaudioprocessing&#xff08;frameworks/av/media/libau…

Matlab教程001:软件介绍和界面使用

1.1 软件介绍 1.1.1 Matlab的介绍 MATLAB&#xff08;MATrix LABoratory&#xff09;是一款由 MathWorks 公司开发的高级编程语言和交互式环境&#xff0c;广泛用于 科学计算、数据分析、机器学习、工程建模、仿真和信号处理 等领域。 1.1.2 主要应用领域 数据分析与可视化…

毫米波雷达标定(2)

1. 前言 前面文章中介绍了产线上毫米波雷达的标定原理和流程,这篇文章则主要介绍其在线标定方法。相对于产线标定,在线标定具备使用自然场景而不是依赖特定标靶的优点,但因此其标定精度会相对差一点。在线标定一般应用于售出产品的维护场景,如果其标定结果精度可以满足使用…

Linux fority source和__builtin_xxx

这段代码是用于启用和配置 GCC/Clang 的 Fortify Source 安全机制的预处理指令。Fortify Source 主要用于在编译时增强对缓冲区溢出等内存安全问题的检查。以下是对每一部分的详细解释&#xff1a; 1. 最外层条件编译 # if CONFIG_FORTIFY_SOURCE > 0目的&#xff1a;检查…

语言模型理论基础-持续更新-思路清晰

1.预训练 相似的任务A、B&#xff0c;任务A已经用大数据完成了训练&#xff0c;得到模型A。 我们利用-特征提取模型的-“浅层参数通用”的特性&#xff0c;使用模型A的浅层参数&#xff0c;其他参数再通过任务B去训练&#xff08;微调&#xff09;。 2.统计语言模型 通过条件…

ResNet与注意力机制:深度学习中的强强联合

引言 在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;一直是图像处理任务的主流架构。然而&#xff0c;随着网络深度的增加&#xff0c;梯度消失和梯度爆炸问题逐渐显现&#xff0c;限制了网络的性能。为了解决这一问题&#xff0c;ResNet&#xff08;残差…

【C++】——C++11新特性

目录 前言 1.初始化列表 2.std::initializer_list 3.auto 4.decltype 5.nullptr 6.左值引用和右值引用 6.1右值引用的真面目 6.2左值引用和右值引用比较 6.3右值引用的意义 6.3.1移动构造 6.4万能引用 6.5完美转发——forward 结语 前言 C&#xff0c;这门在系统…

【C++网络编程】第5篇:UDP与广播通信

一、UDP协议核心特性 1. UDP vs TCP ​特性 ​UDP​TCP连接方式无连接面向连接&#xff08;三次握手&#xff09;可靠性不保证数据到达或顺序可靠传输&#xff08;超时重传、顺序控制&#xff09;传输效率低延迟&#xff0c;高吞吐相对较低&#xff08;因握手和确认机制&…