pytorch学习笔记7

在这里插入图片描述
getitem在进行索引取值的时候自动调用,也是一个魔法方法,就像列表索引取值那样,一个意思

import torchvision
from torch.utils.data import DataLoader

data_transform=torchvision.transforms.Compose(
    [torchvision.transforms.ToTensor()]
)
test_data=torchvision.datasets.CIFAR10('./dataset',train=False,transform=data_transform)
test_loader=DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=False)#numwork,采取多少进程
# img,target=test_data[0]
# print(img.shape)
# print(target)
for i in test_loader:
    img,target=i
    print(img.shape)
    print(target)

在这里插入图片描述
如图所示的输出的选中部分中:
分别为4张图片,三通道,32*32
tensor([3, 2, 3, 2])
这是每张图片的target

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

data_transform=torchvision.transforms.Compose(
    [torchvision.transforms.ToTensor()]
)
test_data=torchvision.datasets.CIFAR10('./dataset',train=False,transform=data_transform)
test_loader=DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=False)#numwork,采取多少进程
# img,target=test_data[0]
# print(img.shape)
# print(target)
writer=SummaryWriter('dataloader')
step=0
for i in test_loader:
    img,target=i
    # print(img.shape)
    # print(target)
    writer.add_images('test_loader_data',img,step)
    step=step+1

writer.close()

在这里插入图片描述
debug设置断点可以查看当前断点的信息

add_images
功能:添加多张图像到TensorBoard。
用法:用于将多张图片添加到日志文件中,通常用于展示一批次的图像。
这里用的是dataloader,每批次4张图片因此用add_images而不是add_image

Epoch
定义:一个epoch表示使用整个训练数据集对模型进行一次完整的训练过程。换句话说,当所有的训练数据都被用来更新模型参数一次时,就完成了一个epoch。
用途:在训练神经网络时,单次遍历所有训练数据通常不足以使模型收敛。需要多次遍历数据集(即多个epoch)以逐渐优化模型参数,从而提高模型的性能。

Batch
定义:batch(也称为mini-batch)是指在一次参数更新过程中所使用的训练样本的一个子集。训练数据通常会被分成若干个batch,每个batch包含一定数量的样本。

用途:使用batch可以平衡训练速度和模型参数更新的稳定性。对于大型数据集,一次性使用全部数据进行参数更新可能会非常耗时且内存占用过高,而使用小的batch可以加速计算,同时还能使梯度估计更稳定。

两者的关系
在训练过程中,一个epoch通常会包含多个batch。每个batch会更新模型的参数一次,因此一个epoch会有多次参数更新。具体的关系可以用以下公式描述

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

data_transform=torchvision.transforms.Compose(
    [torchvision.transforms.ToTensor()]
)
test_data=torchvision.datasets.CIFAR10('./dataset',train=False,transform=data_transform)
test_loader=DataLoader(dataset=test_data,batch_size=64,shuffle=False,num_workers=0,drop_last=False)#numwork,采取多少进程
img,target=test_data[0]
print(img.shape)
print(target)
writer=SummaryWriter('dataloader')

for epoch in range(2):
    step=0
    for i in test_loader:
        img,target=i
        # print(img.shape)
        # print(target)
        writer.add_images('epoch{}'.format(epoch),img,step)
        step=step+1

writer.close()

外层循环是epoch循环,共进行2个epoch。
内层循环是DataLoader的迭代器,它会遍历整个数据集。每次迭代会返回一个批量的数据,其中data是一个包含img和target的元组。
在每个批量数据上,使用SummaryWriter的add_images方法将图片数据img写入TensorBoard。这里将每个epoch的图片放在名为epoch{}的文件夹中,并使用step作为其次级目录,以便于在TensorBoard中查看不同批次的图片

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 06:34:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 06:34:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 06:34:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 06:34:05       20 阅读

热门阅读

  1. 从零手写实现 nginx-23-directive IF 条件判断指令

    2024-06-15 06:34:05       8 阅读
  2. svm 超参数

    2024-06-15 06:34:05       6 阅读
  3. shell判断语句练习

    2024-06-15 06:34:05       6 阅读
  4. MySQL周内训参照2、DDL与DML语句

    2024-06-15 06:34:05       9 阅读
  5. Scala学习笔记12: 高阶函数

    2024-06-15 06:34:05       7 阅读
  6. 详解 Flink CDC 的介绍和入门案例

    2024-06-15 06:34:05       4 阅读
  7. Nginx之Stream(TCP/UDP)负载均衡

    2024-06-15 06:34:05       7 阅读
  8. Sklearn简介、安装教程、入门学习

    2024-06-15 06:34:05       8 阅读
  9. Golang - 连接MySQL执行查询脚本

    2024-06-15 06:34:05       8 阅读