算法小白(真小白)

算法小白(真小白)


一、os模块

os.path.join(dir1,dir2) #路径的拼接

二、from torch.utils.data import Dataset

  • 加载数据的模块

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)

三、from torch.utils.tensorboard import SummaryWriter

  • 数据日记的创建和查看
  • tensorboard --logdir=logs 打开学习日志
  • tensorboard --logdir=logs --port=6007 打开学习日志并设置端口号

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
# 输出到logs文件夹
writer = SummaryWriter("logs")
# 图片路径
image_path = "D:\深度学习\dataset\\train\\ants\\0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL) # 转换成numpy形式
#创建端口展示图片
writer.add_image("test", img_array,1,dataformats="HWC")

# y=2x
for i in range(100):
    # 创建一个页面
    writer.add_scalar("y=2x",2*i,i)

writer.close()

四、from torchvision import transforms

  • 输入 *PIL Image.open()
  • 输出 *tensor ToTensor()
  • 作用 *narrays cv.imread()

from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter

# 加载图片路径
img_path = "D:\深度学习\dataset\\train\\ants\\5650366_e22b7e1065.jpg"
img = Image.open(img_path)#打开图片
# print(type(img))
writer = SummaryWriter("logs")

#转换成tensor类型
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img) #转换tensor类型
writer.add_image("Tensor_img",tensor_img)

# 归一化操作Normalize(mean,std)
trans_normal = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
normal_img = trans_normal(tensor_img)
writer.add_image("noraml_img",normal_img)

# 调整图片大小
print(img.size)
# 调整成100*100
trans_resize = transforms.Resize((100,100))
# 传入一个PIL类型
resize_img = trans_resize(img)
print(resize_img)
# 转换成tensor类型
resize_img = tensor_trans(resize_img)
print(resize_img)

writer.close()

五、torchvision 中数据集的下载

  • torchvision.datasets
    • root:存放路径

train_set = torchvision.datasets.CIFAR10(root='./dataset/CIFAR10',train=True,download=True)
test_set = torchvision.datasets.CIFAR10(root='./dataset/CIFAR10',train=False,download=True)

下载完的图片是PIL类型,我们需要转换成tensor类型:


import torchvision

dataset_transform = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

train_set = torchvision.datasets.CIFAR10(root='./dataset/CIFAR10',train=True,transform=dataset_transform,download=True)
test_set = torchvision.datasets.CIFAR10(root='./dataset/CIFAR10',train=False,transform=dataset_transform,download=True)

print(train_set[0])

六、torchvision 中的测试数据集的加载

  • from torch.utils.data import DataLoader

    • dataset:数据集

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#测试数据集的下载
test_data = torchvision.datasets.CIFAR10('./dataset/CIFAR10',train=False,transform=torchvision.transforms.ToTensor())
#测试数据集的加载
test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0,drop_last=False)
# 测试数据集中第一张图片及target
img,target = test_data[0]
print(img.shape)
print(target)
# 展示图片
writer = SummaryWriter('dataloader')
step = 0
for data in test_loader:
    img,target = data
    writer.add_images('loader',img,step)
    step+=1
writer.close()

01-18 08:49