11.18学习

(七)将数据集与torchvision结合使用

import torchvision

'''torchvision.datasets.CIFAR10 是用于加载CIFAR-10数据集的类。
root="./dataset" 指定了数据集的存储路径,这里是在当前工程目录下的 "dataset" 文件夹。'''
train_set = torchvision.datasets.CIFAR10(root="./dataset",train=True,download=True)#在此工程下创建一个dataset文件夹把数据保存进去
test_set = torchvision.datasets.CIFAR10(root="./dataset",train=False,download=True)
'''train=True 表示加载训练集,train=False 表示加载测试集。
download=True 表示如果数据集不存在,则自动下载。'''
print(test_set[0])#打印测试集第一个样本信息
print(test_set.classes)#打印了CIFAR-10数据集中的类别信息,这是一个包含10个类别名称的列表。
#['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
img,target = test_set[0]#将测试集中第一个样本的图像数据赋值给 img,标签赋值给 target
print(img)
print(target)#3  打印了标签的信息,即该图像所属的类别索引。
print(test_set.classes[target])#cat  打印了该样本对应的类别名称
img.show()

将数据集添加到tensorboard中可视化:

import torchvision
from torch.utils.tensorboard import SummaryWriter

dataset_trans = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])#定义了一个数据集的转换 dataset_trans,它包括一个操作 ToTensor(),该操作将图像转换为PyTorch张量
'''torchvision.datasets.CIFAR10 是用于加载CIFAR-10数据集的类。
root="./dataset" 指定了数据集的存储路径,这里是在当前工程目录下的 "dataset" 文件夹。'''
train_set = torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=dataset_trans,download=True)#在此工程下创建一个dataset文件夹把数据保存进去
test_set = torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=dataset_trans,download=True)
writer = SummaryWriter("p10")#创建一个TensorBoard的记录器,将记录保存在 "p10" 文件夹中
for i in range(10):
    img,target = test_set[i]
    writer.add_image("test_set",img,i)

writer.close()

(八)Dataloader:数据加载到神经网络中

从dataset中去取数据,设置dataloader的参数决定从dataset取的方式

import torchvision
from torch.utils.data import DataLoader
from torchvision import transforms

#准备测试数据集
test_data = torchvision.datasets.CIFAR10("./dataset",train = False,transform=transforms.ToTensor())

test_loader = DataLoader(dataset=test_data,batch_size = 4,shuffle = True,num_workers=0,drop_last=False)
#batch_size = 4每一次取4个数据集打包,drop_last=False最后一次取的时候如果不足batch_size也不会被舍去,
#shuffle = True代表每一次取数据的顺序是不一样的
#测试数据集中第一张图片及target
img,target=test_data[0]#返回值的确定是看CIFAR10中的getitem()
print(img.shape)#torch.Size([3, 32, 32])3通道,及大小32*32
print(target)
#测试数据集中打包的数据
for data in test_loader:
    imgs,targets = data#将4个img和4个target分别打包
    print(imgs.shape)#torch.Size([4, 3, 32, 32])4张图片,3通道,及大小32*32
    print(targets)#tensor([4, 4, 6, 9])取的时候是从任意类取的

(九)神经网络

1.神经网络的骨架-containers

Module:Base class for all neural network modules.

输入经过神经网络中的forward()函数处理,给一个输出

import torch
from torch import nn

class Tudui(nn.Module):
    def __init__(self):
        super().__init__()#通过super().__init__()调用了父类(nn.Module)的__init__方法。

    def forward(self, input):
        output = input + 1
        return output

tudui = Tudui()#创建了Tudui类的一个实例,即一个神经网络对象
x = torch.tensor(1.8)#创建了一个名为x的PyTorch张量,其值为1.8
output = tudui(x)#通过将张量x传递给神经网络tudui(类似于调用函数),触发了forward方法的执行
print(output)#tensor(2.8000)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值