文章目录
讲解都在代码里面…
加载数据集:
import os.path
from torch.utils.data import Dataset
root_dir = 'dataset/train' # 图片的间接根目录
label_dir = 'ants' # 图片的直接根目录
# Mydata类需要重写
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)#合成路径,读取图片的具体相对路径和信息
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) #创建类
#相同的对象可以相加,构成新的数据集
Tensorboard的使用
1.绘制数据的图像
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter('logs')
#writer.add_image()
for i in range(100): #循环画图,构建图像
writer.add_scalar('y=x',i,i) # 解析式,y内容,x内容
writer.close()
2.add_image的使用:
import numpy as np
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter('logs')
image_path='图片路径'
img_PIL=Image.open(image_path) #pil形似打开图片,也可以opencv打开
img_array=np.array(img_PIL) #图片的矩阵化
print(type(img_array))
print(img_array.shape) #
writer.add_image('train',img_array,2,dataformats='HWC')
for i in range(100): #循环画图,构建图像
writer.add_scalar('y=x',i,i) # 解析式,y内容,x内容
writer.close()
Transform使用:
transform的结构:指的是transform.py,就像一个大工具箱:
1.可以把普通的数据转化为 totensor数据类型,可以处理图片信息
transforms的用法:
tensor数据类型:
通过transform.ToTensor去解决俩个问题:
1.transform的使用方法:
2.Tensor数据类型的独特性?:张量形式。
为什么需要tensor的数据类型?
from torchvision import transforms
img=Image.open('图片路径')
writer=SummaryWriter('logs')
tensor1=transforms.ToTensor() #初始化totensor类
tensor_img=tensor1(img) #在类里面图片信息,将会返回tensor类型的图片数据
print(tensor_img) #输出tensor的数据类型,图片的张量表达式
writer.add_image('tensor_img',tensor_img) #添加图片,图片名称,图片内容
writer.close()
常见的transform模板:
输入; PIL Image.open()
输出: tensor ToTensor()
torchvision的使用
import torchvision
from torch.utils.tensorboard import SummaryWriter
dataset_transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor()]) #图片·集体转化为张量形式
train_set=torchvision.datasets.MNIST(root='文件名',train=True,transform=dataset_transform,download=True)
test_set=torchvision.datasets.MNIST(root='',train=False,transform=dataset_transform,do