Tensorboard

1.加载数据

  • Dataset
    • 提供一种方式去获取数据及其Iabel
  • Dataloader
    • 为后面的网络提供不同的数据形式

Dataset

1.如何获取每一个数据及其label

2.告诉我们总共有多少的数据

python 复制代码
from torch.utils.data import Dataset
from PIL import Image
import os

class myData(Dataset):
    def __init__(self,root_dir,label_dir):
        self.root_dir=root_dir
        self.label_dir=label_dir
        self.path=os.path.join(self.root_dir,self.label_dir)
        self.img_path=os.listdir(self.path)

    def __getitem__(self, idx):
        img_name=self.img_path[idx]
        img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)
        img=Image.open(img_item_path)
        label=self.label_dir
        return img,label

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

root_dir="hymenoptera_data/train"
ants_label_dir="ants"
bees_label_dir="bees"
ants_dataset=myData(root_dir,ants_label_dir)
bees_dataset=myData(root_dir,bees_label_dir)

train_dataset=ants_dataset+bees_dataset

1.1批量创建label文件

把图片的label 生成以图片名为文件名的txt文档

python 复制代码
import os

root_dir = 'hymenoptera_data/train'
target_dir = 'bees_images' #可换ants_images
img_path = os.listdir(os.path.join(root_dir, target_dir))
label = target_dir.split('_')[0]
out_dir = 'bees_labels' #可换ants_images
for i in img_path:
    file_name = i.split('.jpg')[0]
    with open(os.path.join(root_dir, out_dir,"{}.txt".format(file_name)),'w') as f:
        f.write(label)


2.Tensorboard 的使用

2.1 add_scalar()------显示Tensorboard

python 复制代码
    def add_scalar(
        self,
        tag,
        scalar_value,
        global_step=None,
        walltime=None,
        new_style=False,
        double_precision=False,
    ):
        """Add scalar data to summary.

        Args:
            tag (str): Data identifier
            scalar_value (float or string/blobname): Value to save
            global_step (int): Global step value to record
            walltime (float): Optional override default walltime (time.time())
              with seconds after epoch of event
            new_style (boolean): Whether to use new style (tensor field) or old
              style (simple_value field). New style could lead to faster data loading.
python 复制代码
from torch.utils.tensorboard import SummaryWriter

writer=SummaryWriter("logs")

# writer.add_image()

for i in range(100):
    writer.add_scalar("y=x",i,i)

writer.close()

终端中运行

python 复制代码
tensorboard --logdir=logs

若很多窗口都叫6006就很不方便,这时候指定窗口名

python 复制代码
tensorboard --logdir=logs --port=6007


若标签未变

python 复制代码
from torch.utils.tensorboard import SummaryWriter

writer=SummaryWriter("logs")

# writer.add_image()

for i in range(100):
    writer.add_scalar("y=2x",3*i,i)

writer.close()

说明每一个writer中也记录了上一个的writer
解决:

①擦除TensorBoard的日志文件并终止该进程,但它不是首选的,因为它会破坏有关您训练的历史信息。

②可以让每个新的培训工作写入(顶级日志的)新的子目录目录。然后TensorBoard将把每个作业视为新的"运行",并创建一个很好的比较视图,以便您可以看到模型的不同小版本之间的培训有何不同。

注意:

子文件夹,也就是说创建新的

Summarywriter("新文件夹")

2.2 add_image()

python 复制代码
    def add_image(
        self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"
    ):
        """Add image data to summary.

        Note that this requires the ``pillow`` package.

        Args:
            tag (str): Data identifier
            img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data
            global_step (int): Global step value to record
            walltime (float): Optional override default walltime (time.time())
              seconds after epoch of event
            dataformats (str): Image data format specification of the form
              CHW, HWC, HW, WH, etc.

由于img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data需要如上四种类型的图像,所以需要

  • 利用Opencv读取图片,获得numpy型图片数据
  • 利用numpy.array(),对PIL图片进行转换
python 复制代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer=SummaryWriter("logs")
image_path="data/train/bees_image/16838648_415acd9e3f.jpg"
img = Image.open(image_path)
img_array = np.array(img)
print(type(img_array))
print(img_array.shape)

writer.add_image("test",img_array,2,dataformats='HWC')

writer.close()

注意:dataformats='HWC'

相关推荐
万粉变现经纪人几秒前
如何解决pip安装报错ModuleNotFoundError: No module named ‘cuml’问题
python·scrapy·beautifulsoup·pandas·ai编程·pip·scipy
IT学长编程3 分钟前
计算机毕业设计 基于Hadoop豆瓣电影数据可视化分析设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试
大数据·hadoop·python·django·毕业设计·毕业论文·豆瓣电影数据可视化分析
星期天要睡觉10 分钟前
计算机视觉(opencv)实战二十一——基于 SIFT 和 FLANN 的指纹图像匹配与认证
人工智能·opencv·计算机视觉
java1234_小锋12 分钟前
Scikit-learn Python机器学习 - 分类算法 - K-近邻(KNN)算法
python·算法·机器学习
victory043114 分钟前
wav2vec微调进行疾病语音分类任务
人工智能·分类·数据挖掘
semantist@语校21 分钟前
第二十篇|SAMU教育学院的教育数据剖析:制度阈值、能力矩阵与升学网络
大数据·数据库·人工智能·百度·语言模型·矩阵·prompt
大翻哥哥25 分钟前
Python上下文管理器进阶指南:不仅仅是with语句
前端·javascript·python
QiZhang | UESTC38 分钟前
JAVA算法练习题day11
java·开发语言·python·算法·hot100
IT_陈寒38 分钟前
React 性能优化必杀技:这5个Hook组合让你的应用提速50%!
前端·人工智能·后端
PyHaVolask1 小时前
Python进阶教程:随机数、正则表达式与异常处理
python·正则表达式·异常处理·随机数生成