首页 > 其他分享 >Torch 中Dataset 和Dataloader 的数据变换

Torch 中Dataset 和Dataloader 的数据变换

时间:2024-08-25 19:25:50浏览次数:4  
标签:10 Dataloader tensor seq Torch Dataset train array size

数据文件:test.csv

df = pd.read_csv('test.csv')
print(df)
a  b  c   d
0  1  2  3   4
1  2  3  4   5
2  3  4  5   6
3  4  5  6   7
4  5  6  7   8
5  6  7  8   9
6  7  8  9  10
7  2  3  4   5
8  3  4  5   6
9  4  5  6   7
def create_inout_sequences(input_data, window_size):
    inout_seq = []
    L = len(input_data)
    for i in range(L - window_size):
        train_seq = input_data[i:i + window_size]
        if (i + window_size+1) > len(input_data):
            break
        else:
            train_label = input_data[:,-1][i + window_size:i + window_size+1]
        inout_seq.append((train_seq, train_label))
    return inout_seq
inout_seq = create_inout_sequences(df.values,window_size=3)
print(inout_seq)

inout_seq:

[(array([[1, 2, 3, 4],
       [2, 3, 4, 5],
       [3, 4, 5, 6]]), array([7])), 
(array([[2, 3, 4, 5],
       [3, 4, 5, 6],
       [4, 5, 6, 7]]), array([8])),
(array([[3, 4, 5, 6],
       [4, 5, 6, 7],
       [5, 6, 7, 8]]), array([9])),
(array([[4, 5, 6, 7],
       [5, 6, 7, 8],
       [6, 7, 8, 9]]), array([10])), 
(array([[ 5,  6,  7,  8],
       [ 6,  7,  8,  9],
       [ 7,  8,  9, 10]]), array([5])),
(array([[ 6,  7,  8,  9],
       [ 7,  8,  9, 10],
       [ 2,  3,  4,  5]]), array([6])), 
(array([[ 7,  8,  9, 10],
       [ 2,  3,  4,  5],
       [ 3,  4,  5,  6]]), array([7]))]
class Dataset(Dataset):
    def __init__(self, sequences):
        self.sequences = sequences
 
    def __len__(self):
        return len(self.sequences)
 
    def __getitem__(self, index):
        sequence, label = self.sequences[index]
        return torch.Tensor(sequence), torch.Tensor(label)
train_dataset = Dataset(inout_seq)

train_set:

tensor([[1., 2., 3., 4.],
        [2., 3., 4., 5.],
        [3., 4., 5., 6.]])
tensor([7.])
tensor([[2., 3., 4., 5.],
        [3., 4., 5., 6.],
        [4., 5., 6., 7.]])
tensor([8.])
tensor([[3., 4., 5., 6.],
        [4., 5., 6., 7.],
        [5., 6., 7., 8.]])
tensor([9.])
tensor([[4., 5., 6., 7.],
        [5., 6., 7., 8.],
        [6., 7., 8., 9.]])
tensor([10.])
tensor([[ 5.,  6.,  7.,  8.],
        [ 6.,  7.,  8.,  9.],
        [ 7.,  8.,  9., 10.]])
tensor([5.])
tensor([[ 6.,  7.,  8.,  9.],
        [ 7.,  8.,  9., 10.],
        [ 2.,  3.,  4.,  5.]])
tensor([6.])
tensor([[ 7.,  8.,  9., 10.],
        [ 2.,  3.,  4.,  5.],
        [ 3.,  4.,  5.,  6.]])
tensor([7.])
train_loader = DataLoader(train_dataset, batch_size=3, shuffle=False, drop_last=True)

train_loader:

tensor([[[1., 2., 3., 4.],
         [2., 3., 4., 5.],
         [3., 4., 5., 6.]],

        [[2., 3., 4., 5.],
         [3., 4., 5., 6.],
         [4., 5., 6., 7.]],

        [[3., 4., 5., 6.],
         [4., 5., 6., 7.],
         [5., 6., 7., 8.]]])
tensor([[7.],
        [8.],
        [9.]])
tensor([[[ 4.,  5.,  6.,  7.],
         [ 5.,  6.,  7.,  8.],
         [ 6.,  7.,  8.,  9.]],

        [[ 5.,  6.,  7.,  8.],
         [ 6.,  7.,  8.,  9.],
         [ 7.,  8.,  9., 10.]],

        [[ 6.,  7.,  8.,  9.],
         [ 7.,  8.,  9., 10.],
         [ 2.,  3.,  4.,  5.]]])
tensor([[10.],
        [ 5.],
        [ 6.]])
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=False, drop_last=True)

train_loader:

tensor([[[1., 2., 3., 4.],
         [2., 3., 4., 5.],
         [3., 4., 5., 6.]],

        [[2., 3., 4., 5.],
         [3., 4., 5., 6.],
         [4., 5., 6., 7.]],

        [[3., 4., 5., 6.],
         [4., 5., 6., 7.],
         [5., 6., 7., 8.]],

        [[4., 5., 6., 7.],
         [5., 6., 7., 8.],
         [6., 7., 8., 9.]]])
tensor([[ 7.],
        [ 8.],
        [ 9.],
        [10.]])

后面的数据小于batch_size,舍弃了

标签:10,Dataloader,tensor,seq,Torch,Dataset,train,array,size
From: https://www.cnblogs.com/conpi/p/18379379

相关文章

  • 【PyTorch】n卡驱动、CUDA Toolkit、cuDNN全解安装教程
    @目录GPU、NVIDIAGraphicsDrivers、CUDA、CUDAToolkit和cuDNN的关系使用情形判断仅仅使用PyTorch使用torch的第三方子模块安装NVIDIAGraphicsDrivers(可跳过)前言Linux法一:图形化界面安装(推荐)法二:手动下载文件后命令行安装(不推荐)windows法一:GeForceExperience自动安装法二:手动......
  • Pytorch DDP分布式训练介绍
    近期一直在用torch的分布式训练,本文调研了目前Pytorch的分布式并行训练常使用DDP模式(DistributedDataParallell ),从基本概念,初始化启动,以及第三方的分布式训练框架展开介绍。最后以一个Bert情感分类给出完整的代码例子:torch-ddp-examples。基本概念DistributedDataParallel(DD......
  • numpy_torch_basic
    importnumpyasnpCreatearr1=np.array([1.,2.,3.])arr1array([1.,2.,3.])arr2=arr1.astype(int)arr2array([1,2,3])arr3=np.ones((3,2,1))arr3array([[[1.],[1.]],[[1.],[1.]],[[1.],[1.]]])a=......
  • 基于yolov10的电梯电瓶车、电动车检测系统,支持图像检测,也支持视频和摄像实时检测(pytor
       更多目标检测和图像分类识别项目可看我主页其他文章功能演示:基于yolov10的电梯电瓶车,电动车检测,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili(一)简介基于yolov10的电梯电瓶车、电动车检测系统是在pytorch框架下实现的,这是一个完整的项目,包......
  • 目标检测实践过程中,遇到“No module named ‘torch._six’”报错的一个快速解决方案(无
    很多人在按照网络、书籍教程中的流程尝试自己实现一个基于Faster-RCNN的目标检测模型时,如果调用了PyTorch官方github上的文件时,coco_eval.py文件中会触发报错。1.报错原因PyTorch在2.0之后的版本中移除了_six,导致在coco_eval.py中调用torch._six失败2.解决方案(1)直接根......
  • 计算机毕业设计opencv+pytorch疲劳驾驶检测系统 自动驾驶 面部多信息特征融合的疲劳驾
    创新点:算法模型训练、可视化、深度学习框架、疲劳监测、模拟自动驾驶检测驾驶员疲劳核心算法:基于多信息特征指标融合建立驾驶员疲劳评价体系通过构建一种驾驶员面部多信息特征融合综合评价方法,为了能够将系统检测结果更直观的体现,研究了基于一种改进的粗糙集理论对各项特征结......
  • 零基础学习人工智能—Python—Pytorch学习(八)
    前言本文介绍卷积神经网络的上半部分。其实,学习还是需要老师的,因为我自己写文章的时候,就会想当然,比如下面的滑动窗口,我就会想当然的认为所有人都能理解,而实际上,我们在学习的过程中之所以卡顿的点多,就是因为学习资源中想当然的地方太多了。概念卷积神经网络,简称CNN,即Convoluti......
  • 零基础学习人工智能—Python—Pytorch学习(七)
    前言本文主要讲神经网络的下半部分。其实就是结合之前学习的全部内容,进行一次神经网络的训练。神经网络下面是使用MNIST数据集进行的手写数字识别的神经网络训练和使用。MNIST数据集,是一个常用的手写数字识别数据集。MNIST数据集包含60,000张28x28像素的灰度训练图像和......
  • pytorch
    二维绘图importmatplotlib.pyplotaspltplt.plot(x,y)三维绘图importmatplotlib.pyplotaspltfig=plt.figure()//创建一个图形窗口ax=fig.add_subplot(111,projection='3d')//111指的是一行一列子图的第一个是这个图ax.plot_surface(w_grid,b_grid,ms......
  • 零基础学习人工智能—Python—Pytorch学习(六)
    前言本文主要讲神经网络的上半部分。另外,我发现我前面文章写的有歧义的地方还是挺多,虽然,已经改了一部分,但,可能还有没发现的,大家看的时候尽量多理解着看吧。本着目的是学会使用神经网络的开发,至于数学的部分,就能过就过吧。神经网络先学个例子先结合以前的知识理解一个例子,理......