【土堆pytorch】入门P1-P15 基础知识


一、pytorch的两大法宝函数

dir():打开,看见
在这里插入图片描述
help():说明书

help(pytorch.3.a)
输出:将此扳手放在特定地方,然后拧动

总结:
dir()函数,能让我们知道工具箱以及工具箱中的分隔区有什么东西。
help()函数,能让我们知道每个工具是如何使用的,工具的使用方法。


二、Jupyter的使用及运行的对比

//pytorch是创建的环境
activate pytorch
jupyter notebook


shift+回车:运行并进入下一行

对比:

  • python文件:块是所有行的代码。

    优点:通用,传播方便,适用于大型项目。
    缺点:需要从头运行。

  • python控制台:以每一行为运行。

    也可以以任意行为块运行:shift+回车。

    优点:显示每个变量的属性,可用于调试。
    缺点:不利于代码阅读及修改。

  • jupyter:以任意行为块运行,代码阅读性高。

    优点:利于代码阅读及修改。
    缺点:环境需要配置。


三、pytorch加载数据

Dataset:提供一种方式去获取数据及其label

DataLoader:为网络提供不同的数据形式

1.Dataset

代码如下(示例):

from torch.utils.data import Dataset
import os
from PIL import Image

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="dataset/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)

2.DataLoader

代码如下(示例):

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

test_data = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

img, target = test_data[0]
print(img.shape)  
print(target) 

writer = SummaryWriter("dataloader")
for epoch in range(2):  
    step = 0
    for data in test_loader:  
        imgs, targets = data
        # print(imgs.shape)  
        #  print(targets)  
        writer.add_images("Epoch: {}".format(epoch), imgs, step)
        step = step + 1

writer.close()

四、TensorBoard()

提示:打开方式:在终端输入tensorboard --logdir=logs

代码如下(示例):

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("logs")
image_path="E:\\20220828162137.jpg"
img=Image.open(image_path)
img_array=np.array(img)
print(type(img_array))
print(img_array.shape)

writer.add_image("certificate",img_array,1, dataformats="HWC")
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)

writer.close()

五、Transforms()

图片格式:

  • PIL:Image.open()
  • tensor:ToTensor()
  • narrays:cv.imread()

代码如下(示例):

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

img_path="dataset/train/ants_image/1.jpg"
img=Image.open(img_path)

writer=SummaryWriter("logs")

tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(img)

writer.add_image("Tensor_img",tensor_img)

writer.close()

call的用法
call的用法

compose的用法

compose建立的类对象以括号的方式进行调用

ToTensor的用法

TensorBoard()只能用Tensor的数据类型

Normalize的用法

归一化,(输入值-均值)/标准差

Resize的用法

输入是PIL类型,给定是序列,进行尺寸调整;只给定一个数,最小边匹配number,即等比缩放。

RandomCrop的用法

随机裁剪

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

writer = SummaryWriter("logs")
img = Image.open("1.jpg")
print(img)

# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)

# Normalize
print(img_tensor[0][0][0])  
#均值,标准差,num和channel相同
trans_norm = transforms.Normalize([6, 3, 2], [9, 3, 5]) 
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0]) 
writer.add_image("Normalize", img_norm, 2)

# Resize
print(img.size,)
trans_resize = transforms.Resize((512, 512))
# img -> PIL -> Resize -> img_resize PIL
img_resize = trans_resize(img)
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("Resize", img_resize, 0)
print(img_resize, '55555555555555555555555555')

# Compose - resize - 2
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([
    trans_resize_2, trans_totensor
])
img_resize_2 = trans_compose(img)
writer.add_image("Resize", img_resize_2, 1)

# RandomCrop
trans_random = transforms.RandomCrop(512)
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):
    img_crop = trans_compose_2(img)
    writer.add_image("RandomCrop", img_crop, i)

writer.close()


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值