前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

作者头像
用户11315985
发布于 2024-10-16 02:08:04
发布于 2024-10-16 02:08:04
20400
代码可运行
举报
文章被收录于专栏:CSDN小华CSDN小华
运行总次数:0
代码可运行

重要工具介绍

TensorBoard:

是一个TensorFlow提供的强大工具,用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。 TensorBoard 简介 TensorBoard是TensorFlow提供的一个可视化工具,用于:

1.可视化模型的图形结构(Graph Visualization)。 2.跟踪和可视化指标(metrics)如损失和准确率随时间的变化。 3.显示图像数据、音频数据和其他数据类型。 4.查看训练过程中生成的直方图、分布和统计信息等。

安装TensorBorad

or

pip install tensorboard

代码示例: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
for i in range(100):
    writer.add_scalar("y=x**2",i**2,i)
    writer.close()

使用 TensorBoard

1. 设置 TensorBoard 回调

在TensorFlow中,你需要通过TensorBoard回调来记录数据,以便后续在TensorBoard中查看。通常在训练模型时设置TensorBoard回调。

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
from tensorflow.keras.callbacks import TensorBoard

# 创建一个TensorBoard回调,指定日志存储的目录
tensorboard_callback = TensorBoard(log_dir="./logs")

# 使用回调来训练你的模型
model.fit(x_train, y_train, epochs=10, callbacks=[tensorboard_callback])

在这个例子中,log_dir 参数指定了TensorBoard日志存储的目录路径,训练完成后,会在该目录下生成日志文件,用于后续的可视化。

2. 启动 TensorBoard

训练完成后,你可以通过命令行启动TensorBoard来可视化日志文件:

tensorboard --logdir=./logs

这将启动一个本地服务器,默认端口为6006(可以通过--port参数修改),你可以在浏览器中访问 http://localhost:6006(或者相应的端口)来查看TensorBoard的界面。

3. TensorBoard 页面功能

TensorBoard页面的功能包括:

Scalars(标量):用于显示指标随时间的变化,如损失和准确率。 Graphs(图形):展示模型的计算图,有助于理解模型结构和操作流程。 Distributions(分布) 和 Histograms(直方图):用于查看权重和梯度的分布和直方图,有助于调试和优化模型。 Images(图像) 和 Audio(音频):用于显示训练过程中产生的图像和音频数据。 Projector(投影仪):用于高维数据的降维可视化,如嵌入向量。

4. 高级功能

除了基本的使用外,TensorBoard还支持一些高级功能,如自定义可视化和在远程服务器上运行。你可以根据具体的需求和应用场景进一步探索这些功能。

通过正确设置TensorBoard回调和启动TensorBoard服务器,你可以轻松地监控和分析模型的训练过程和结果,从而做出更好的调整和决策。

OpenCV介绍:(Open Source Computer Vision Library)

是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。下面是关于OpenCV的一些基本信息和其主要用途:

OpenCV 的基本信息:

开源性质:OpenCV 是一个开源项目,允许用户自由地使用、修改和分发其源代码。 跨平台:OpenCV 可以在多个平台上运行,包括WindowsLinux、Mac OS X、Android 等。 多语言支持:OpenCV 主要使用C++编写,但也提供了PythonJava等多种语言的接口。 丰富的功能:OpenCV 提供了丰富的图像处理和计算机视觉算法,涵盖了从基本的图像处理操作(如滤波、边缘检测、色彩空间转换等)到高级的计算机视觉任务(如目标检测、人脸识别、物体跟踪等)的各个方面。

OpenCV 的主要用途:

图像处理:

提供了大量的图像处理功能,例如:图像滤波、图像增强、几何变换(如旋转、缩放)、色彩空间转换、直方图均衡化等。

计算机视觉:

在计算机视觉领域,OpenCV 提供了许多算法和工具,如特征检测(SIFT、SURF等)、目标检测(Haar 级联检测器、深度学习模型)、物体跟踪、摄像头标定、立体视觉等。

机器学习集成:

OpenCV 与机器学习的集成能力较强,支持主流的机器学习库(如 TensorFlow、PyTorch),可以进行图像分类、图像分割、人脸识别等任务。

实时图像处理:

由于其高效的设计和实现,OpenCV 适合于实时图像处理和视频处理应用,例如实时物体检测、视频流处理、运动跟踪等。

教育和研究:

OpenCV 不仅在工业界广泛应用,还被广泛用于教育和研究领域,作为计算机视觉和图像处理的教学工具和研究平台。

总之,OpenCV 是一个功能强大且广泛应用于图像处理和计算机视觉领域的开源库,为开发者提供了丰富的工具和算法,帮助他们实现各种复杂的图像处理和计算机视觉任务。

PIL

是 Python Imaging Library 的缩写,是一个用于图像处理的 Python 库。它提供了许多方便的图像处理功能,包括打开、操作和保存多种图像文件格式(如JPEG、PNG、BMP等),以及基本的图像操作(如裁剪、调整大小、旋转等)和高级的图像处理技术(如滤波、图像增强、颜色转换等)。

主要特点和功能:

图像读写: PIL 允许用户打开和保存多种常见的图像文件格式,使得用户可以轻松处理不同格式的图像数据。 基本图像操作: 包括图像的裁剪、调整大小、旋转、镜像等基本的几何变换和操作。 图像增强: 提供了各种图像增强技术,如锐化、模糊、边缘增强、颜色增强等,以改善图像质量或凸显特定特征。 色彩空间转换: 支持颜色空间的转换,如RGB到灰度、RGB到HSV等,方便用户进行颜色信息的分析和处理。 图像滤波: 提供了一系列的图像滤波器,如高斯滤波、中值滤波等,用于平滑图像或去除噪声。 图像合成和处理: 允许用户在图像上绘制文本、图形和其他图像,进行复杂的图像合成和处理操作。 支持批量处理: 可以轻松地批量处理图像文件,进行相同或类似的操作,提高处理效率。 跨平台: PIL 可以在多个平台上运行,并且易于安装和使用,适合不同应用场景的图像处理需求。

注意事项:

PIL 目前维护较少,推荐使用其后续开发的 Pillow 库(PIL Fork),它在功能和性能上都有所增强,并且对 Python 3 的支持更好。

pytorch中较为重要的两个函数

dir():

能 让 我 们 知 道 工 具 箱 以 及 工 具 箱 (pytorch包)中 的 分 隔 区 有 什 么 东 西 。 (相当于打开包的作用)

help():

能 让 我 们 知 道 每 个 工 具 是 如 何 使 用 的 , 工 具 的 使 用 方 法 。(相当于说明书

当你引入一个新模块时,你可以先用dir()查看模块中的内容,然后使用help()来深入了解特定函数或类的用法和功能。

代码示例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
print(dir(np))
help(np.arange)

加载数据

dataset:

提供一种数据去获取数据以及标签和编号,可以看到每个要获取的数据以及lable

dataloader:

为后面的网络提供不同的数据形式,对dataset里的数据进行打包操作,加载数据,告诉我们总共有多少数据

代码示例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch
from torch.utils.data import Dataset, DataLoader


# 定义自定义的Dataset类
class CustomDataset(Dataset):
    def __init__(self, data, targets):
        self.data = data
        self.targets = targets

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        x = self.data[index]
        y = self.targets[index]
        return x, y


# 假设有一些数据和对应的标签
data = torch.randn(100, 3, 32, 32)  # 1003通道的32x32图像数据
targets = torch.randint(0, 10, (100,))  # 100个随机的0-9的整数标签

# 创建自定义的Dataset实例
dataset = CustomDataset(data, targets)

# 使用DataLoader加载数据
batch_size = 10
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 迭代DataLoader获取数据
for batch_idx, (inputs, labels) in enumerate(dataloader):
    # 在这里可以对每个批次的数据进行操作,例如送入模型进行训练
    print(f'Batch {batch_idx}: Inputs shape {inputs.shape}, Labels shape {labels.shape}')

下面是运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【初阶数据结构】——带头双向循环链表(C描述)
上一篇文章我们已经学了单链表(不带头),那这篇文章,我们就来学习一下带头双向循环链表。
YIN_尹
2024/01/23
1200
【初阶数据结构】——带头双向循环链表(C描述)
【数据结构初阶】双向带头循环链表原来是纸老虎,结构复杂,操作简单
目录 0.结构体定义 1.初始化 2.尾插 3.打印 4.头插 5.任意位置插入前面位置 6.尾删 7.头删 8.链表长度 9.任意位置删除当前位置 10. 销毁 ---- 双向带头循环链表:结构复杂,操作简单 0.结构体定义 这里方便浏览,特地没有将int类型重命名为TLDateType  #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h
MicroFrank
2023/01/16
1620
数据结构初步(五)- 线性表之单链表的分析与C语言实现
上节介绍了顺序表,本节将继续数据结构的学习:介绍链表的有关概念与知识,并着重于分析单链表的具体实现。 本节多组动图预警!!!
怠惰的未禾
2023/04/27
9000
数据结构初步(五)- 线性表之单链表的分析与C语言实现
【数据结构】链表最强结构-带头双向循环链表(超详解)
目录 前言 写在前面的话 链表类型区别 带头+双向+循环链表增删查改实现 接口展示 构建节点类型 创建链表及初始化 节点开辟 链表摧毁 链表打印 链表尾插 链表尾删 链表头插 链表头删 链表查找 链表pos位置前插 链表pos删除 总结 ---- 前言 ---- 本章将带你们走进带头双向循环链表的实现与讲解 写在前面的话 ---- 在前一章我们学习实现了单链表(无头单向不循环链表),这里我们引入带头双向循环链表 很明显这两种结构截然不同,但都是作为链表最常使用链表结构 前者因其结构上的缺点
用户9645905
2022/11/30
3390
【数据结构】链表最强结构-带头双向循环链表(超详解)
链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
上篇文章简述讲解了链表的基本概念并且实现了无头单向不循环链表:链接未来:深入理解链表数据结构(一.c语言实现无头单向非循环链表)-CSDN博
是Nero哦
2024/01/18
1390
链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
要编写一个带头双向循环链表项目,首先要明确我们想要达到的效果是什么样,下面我将用vs2022编译器来为大家演示一下带头双向循环链表程序运行时的样子:
修修修也
2024/04/01
2420
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
数据结构——带头双向循环链表
Eternity._
2024/06/14
840
数据结构——带头双向循环链表
数据结构---双向链表
单向链表:一块内存指向下一个内存。 单链表存在一些缺陷: 1.查找速度慢。 2.不能从后往前找。 3.找不到前驱。 链表的结构分为8种: 1.单向和双向 2.带头和不带头 带头的链表有一个带哨兵位的头结点,这个节点不存储有效数据。 好处:尾插更方便,不需要二级指针了,带头结点不需要改变传过来的指针,,也就意味着不需要传二级指针 3.循环和不循环 不循环:尾是指向空的 循环:尾是指针头的 一、无头单向肺循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的领接表等等。 另外这种结构在笔试面试中出现很多。 二、带头双向循环链表:结构复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表,另外这个结构虽然结构复杂, 但是使用代码实现以后会发现带来很多优势,实现反而简单了。
用户11305458
2024/10/09
710
【数据结构】双向链表
顺序表的优点: 1.尾插尾删的效率很高 2.可以用下标随机访问 3.相比链表结构 CPU高速缓存命中率更高 顺序表的缺点: 1.头部和中部插入效率低——O(N) 2.扩容时的性能消耗+扩容时的空间浪费 链表的优点: 1.任意位置插入删除效率很高——O(1) 2.按需申请释放 链表的缺点: 1.不支持随机访问 注:三级缓存被称为CPU周围的禁卫军 CPU执行指令不会直接访问内存  1.先看数据在不在三级缓存,在(命中),直接访问 2.不在(不命中),先加载到缓存,再访问 注:加载到缓存时,会将需要加载的位置开始的一段都加载进缓存,(加载多少取决于硬件) 由于顺序表的数据彼此之间的地址紧密联系 所以加载到高速缓存时命中率高 但链表不然 更可能会导致缓存污染 
IT编程爱好者
2023/04/12
2380
【数据结构】双向链表
[数据结构]—带头双向循环链表——超详解
注意,该函数的前提条件是链表中至少存在一个节点,否则会因为assert函数判断失败而终止程序。在使用该函数时需要注意链表的状态。
小李很执着
2024/06/15
1190
[数据结构]—带头双向循环链表——超详解
【初探数据结构】线性表——链表(二)带头双向循环链表(详解与实现)
在初始化时,创建一个头节点,并将其next和prev指针都指向自身,这样链表初始时是空的,并且形成了一个循环结构。
我想吃余
2025/03/31
1060
【链表】双向循环带头链表-增-删-查(C语言)
---- ---- 单链表存在的缺陷: 不能从后往前走, 找不到他的前驱, 指定位置 删除 增加 尾删 都要找前一个,时间复杂度都是O(n) ---- 针对上面的这些缺陷的解决方案——双向链表。 ---- 实际中要实现的链表的结构非常多样,以下情况组合起来就有8种链表结构: 单向、双向 带头、不带头——带哨兵位的头结点,这个结点不存储有效数据,好处是什么?尾插的判断更方便简单,带头就不需要二级指针了,(带头结点,不需要改变穿过来的指针,也就是意味着不需要传二级指针了。) 循环、非循环 ---- 无头单向非循
半生瓜的blog
2023/05/12
3220
【链表】双向循环带头链表-增-删-查(C语言)
数据结构——lesson4带头双向循环链表实现
大耳朵土土垚
2024/03/13
1520
数据结构——lesson4带头双向循环链表实现
带头双向循环链表增删查改实现(C语言)
带头双向循环链表,那么,结点的结构就要有两个指针域,分别指向前一个结点和后一个结点。
有礼貌的灰绅士
2023/03/28
5990
带头双向循环链表增删查改实现(C语言)
【数据结构】顺序表和链表详解&&顺序表和链表的实现
线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串..
用户10925563
2024/06/04
2370
【数据结构】顺序表和链表详解&&顺序表和链表的实现
【数据结构】双向带头循环链表(c语言)(附源码)
而对于单链表,由于不具备这三个特性,所以在运行效率上要低于双向链表。那么我们来看看它的结构定义:
ephemerals__
2024/10/24
1660
【数据结构】双向带头循环链表(c语言)(附源码)
【数据结构与算法】带头双向循环链表
关于程序的三个部分前面已经说了很多次了,这里就不展开说明了,直接说一说我们要实现的功能:
平凡的人1
2022/11/15
2040
【数据结构与算法】带头双向循环链表
单循环链表-带头双向循环链表的实现
  虽然名字听上去比较复杂单循环链表,但是实现起来比单链表(全名:不带头、不循环、单向链表)更加简单,也不需要过多考虑特殊情况;
宜轩
2022/12/29
6470
【数据结构初阶】单链表补充内容+又双叒叕刷链表题
综合而言,两个各有优缺,相辅相成,具体用谁看场景,但是总体而言顺序表使用的频率更高一点
MicroFrank
2023/01/16
3360
【数据结构初阶】复杂链表复制+带头双向循环链表+缓存级知识
我们下面的讲解顺序是先给大家将最后一道链表题,本题难度较大,所以在大家还没看困的基础下,我们先讲解一下这道题目。然后博主在详细得用图文方式给大家讲一下链表的另一经典结构:带头双向循环链表。最后我们利用一小段时间再给大家补充一下缓存级部分的知识,由于偏硬件,仅供了解即可。
举杯邀明月
2023/04/12
2990
【数据结构初阶】复杂链表复制+带头双向循环链表+缓存级知识
推荐阅读
相关推荐
【初阶数据结构】——带头双向循环链表(C描述)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 重要工具介绍
    • TensorBoard:
    • 安装TensorBorad
    • 使用 TensorBoard
      • 1. 设置 TensorBoard 回调
      • 2. 启动 TensorBoard
      • 3. TensorBoard 页面功能
      • 4. 高级功能
  • OpenCV介绍:(Open Source Computer Vision Library)
    • OpenCV 的基本信息:
    • OpenCV 的主要用途:
      • 图像处理:
      • 计算机视觉:
      • 机器学习集成:
      • 实时图像处理:
      • 教育和研究:
  • PIL
    • 主要特点和功能:
      • 注意事项:
  • pytorch中较为重要的两个函数
    • dir():
    • help():
    • 代码示例1:
  • 加载数据
    • dataset:
    • dataloader:
    • 代码示例2:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档