Pytorch 自定义dataloader实现多通道按比例输入不同label数据

Dataloader

当我们使用pytorch进行深度学习模型开发时,为了使用自己的数据集训练网络,往往需要构建自己的dataloader。dataloader用于构建可迭代的数据装载器,可以使用for img, labels in dataloaders进行可迭代对象的访问,从而提取数据用于训练与验证。

pytorch 循环这个 DataLoader 对象,将img, label加载到模型中进行训练。

自定义

自定义的LoadData三个方法是缺一不可的:

1.__init__(),主要用来定义数据的预处理
2.__getitem__方法,返回数据的img和label
3.__len__方法,返回数据个数

pytorch会通过本文自定义的dataloader,从ch1,ch2,ch3三个文件夹按一定比例提取img和mask中的数据作为模型输入,从而实现多通道按比例输入不同label数据。
在这里插入图片描述
在这里插入图片描述

代码

import os
import numpy as np
import random
import cv2
from torch.utils import data
import glob




class My_data(data.Dataset):
    def __init__(self, opt):
        self.opt = opt
        self.__counter = 0

        self.load_data()

    def load_data(self):
        root_path = self.opt.data_root

        name_img_png = R'/img/*.png'
        name_mask_png = R'/mask/*.png'

        temp_char = 'ch1'
        self._channel_1_img = glob.glob(os.path.join(root_path, temp_char+name_img_png))
        self._channel_1_mask = glob.glob(os.path.join(root_path, temp_char+name_mask_png))
        self.check_error(self._channel_1_img, self._channel_1_fake, self._channel_1_mask, temp_char)

        temp_char = 'ch2'
        self._channel_2_img = glob.glob(os.path.join(root_path, temp_char + name_img_png))
        self._channel_2_mask = glob.glob(os
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将一维数据快速分割成二维数据,可以使用PyTorchDataLoaderDataset来实现。下面是一个示例代码,演示了如何使用DataLoader来加载一维数据并将其分割成二维数据: ```python import torch from torch.utils.data import DataLoader, Dataset class CustomDataset(Dataset): def __init__(self, data): self.data = data def __getitem__(self, index): # 将一维数据分割成二维数据 row = self.data[index * 2] col = self.data[index * 2 + 1] return row, col def __len__(self): return len(self.data) // 2 # 一维数据 data = [1, 2, 3, 4, 5, 6] # 创建自定义数据dataset = CustomDataset(data) # 创建数据加载器 dataloader = DataLoader(dataset, batch_size=2, shuffle=True) # 遍历数据加载器 for batch in dataloader: rows, cols = batch print('Rows:', rows) print('Cols:', cols) ``` 在这个例子中,我们首先定义了一个自定义数据集CustomDataset,它接受一维数据作为输入。在`__getitem__`方法中,我们根据索引将一维数据分割成两个数值,作为二维数据的行和列。`__len__`方法返回了数据集的长度。 然后,我们使用自定义数据集创建了一个数据加载器DataLoader。在这个例子中,我们将批大小设置为2,并启用了数据的随机打乱(shuffle)。最后,我们遍历数据加载器,每次迭代获取一个批次的数据,其中`rows`和`cols`分别是二维数据的行和列。 这样,你就可以使用PyTorchDataLoader将一维数据快速分割成二维数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值