三种编译方式的优缺点
Pytroch中的加载数据
主要涉及了两个类,一个叫Dataset,一个叫Dataloader.
举一个不恰当的例子,我们要在诸多的垃圾(数据)中找到我们所需要的垃圾(数据),Dataset就是将其中的可回收垃圾提取出来,并且将它们进行编号,同时可以根据编号获取相对应的垃圾,同时获取相对应的label.总结就是提供一种方式去获取数据及其label.(包括1.如何获取每一个数据及其label,2.告诉我们总共有多少的数据)
Dataloader为后面的网络提供了不同的数据形式
下面是使用Dataset类的步骤及编码----(主要是重写两个方法)
def __getitem_(self, index): raise NotImplementedError def _add_(self, other): return ConcatDataset([self, other])
Dataset类代码实战
from torch.utils.data import Dataset
//引入图片的相关函数
from PTL import Image
//os库提供了基本的系统文件交互的功能,类似于访问系统文件夹中的内容。
import os
class MyData(Dataset):
//self相当于java中的this,可以理解为一个全局变量。
//root_dir就是指某个根文件夹的路径,相对地址
//label是数据的标签,同时也是存储数据的上一层路径
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.image_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 = "dataset/train"
ants_label_dir = "ants"
ants_dataset = MyData(root_dir, ants_label_dir)
1.os操作示例,比如,获取某一个文件下的所有文件,
dir_path="dataset/train/ants"
img_path_list = os.listdir(dir_path)
img_path_list中就是所有文件名称数组。
2.介绍一个os库下的一个函数--->os.path.join函数-->路径的拼接
root_dir = "dataset/train"
label_dir = "ants"
path = os.path.join(root_dir,label_dir)
TensorBoard的使用一
1.TensorBoard使用
我们可以看到训练过程中losses的变化,从而判断我们的训练是否是正常的状态
From torch.utils.tensorboard import SummaryWriter
SummaryWriter类的作用:
官方文档翻译:
将条目直接写入 log_dir 中的事件文件以供 TensorBoard 使用。
`SummaryWriter` 类提供了一个高级 API,用于在给定目录中创建事件文件,并向其中添加摘要和事件。 该类异步更新文件内容。 这允许训练程序调用方法以直接从训练循环将数据添加到文件中,而不会减慢训练速度
具体使用例如绘制一个y=2x图像:
From torch.utils.tensorboard import SummaryWriter //创建实例 writer = SummaryWriter("log") //writer.add_image()
//y=2x
for i in range(100):
writer.add_scalar("y=2x", 2*i, i)
writer.close()
1.add_scalar()方法的使用
作用在于:給summary中添加scalar数据
参数有:tag(String):相当于图表标题,scalar_value(float or String/blobname):Value to save 相当于图表y轴,global_step(int):Global step value to record 相当于图表的横坐标
遇到的问题:爆出错误,版本低,需要安装tensorboard,
安装tensorboard:1.打开anaconda Prompt黑窗口,2.进入pytorch环境(conda activate pytorch,3.使用pip install tensorboard进行安装。4.安装成功
运行文件,会出现一个Logs文件夹下带有一个新文件。
如何打开这个文件==》步骤如下:在pycharm控制台输入tensorboard --logdir=logs --port=6007
注意:当你修改了绘图的x,y轴关系时候,重复的写入,会造成图像的混乱,解决办法:每当训练一个新的模型,就把以往的文件删除;或者官方給的解决办法,可以在此基础上创建一个新的文件夹。
2.add_image()方法的使用
作用在于:給summary中添加image数据
参数有:tag(String):相当于图表标题,img_tensor(torch.Tensor, numpy.array, or string/blobname):Image data,global_step(int):Global step value to record 相当于图表的横坐标\
标签:img,self,label,学习,pytorch,path,root,dir From: https://www.cnblogs.com/cywriting/p/17511798.html