pytorch生成带滑动的训练集测试集(batch)

本文介绍了如何在PyTorch中创建带有滑动步长的训练集和测试集,特别适用于LSTM等需要序列输入的模型。通过示例代码展示了不同滑动步长下批处理的生成过程,解决训练数据的连续性问题。
部署运行你感兴趣的模型镜像

话不多说,先上代码

Example1

from torch.utils import data
import torch

batch_size = 3
t1 = np.arange(0,20)
t2 = np.arange(0,20)+100

生成序列0~19和100~190,分别模拟x_train和y_train

tensor1 = torch.from_numpy(t1)
tensor2 = torch.from_numpy(t2)

上一步很关键,否则报错

data_set = data.TensorDataset(tensor1,tensor2)
data_iter = data.DataLoader(data_set,batch_size=3,shuffle=False)
for x_batch, y_batch in data_iter:
    print('-----------------')
    dsp(x_batch)
    dsp(y_batch)
    print('-----------------')

部分输出结果:

不过上面的例子有个问题,如果使用类似LSTM这种模型,需要滑动输入比如

原始如下:

tensor([0, 1, 2])
tensor([100, 101, 102])
tensor([3, 4, 5])
tensor([103, 104, 105])

那么带滑动步长的时候呢slide=1的时候

mini_batch01:

tensor([0,1,2])

tensor([100, 101, 102])

mini_batch02:

tensor([1, 2, 3])

tensor([101,102,103])

那么带滑动步长的时候呢slide=2的时候

mini_batch01:

tensor([0, 1, 2])

tensor([100, 101, 102])

mini_batch02:

tensor([2, 3, 4])

tensor([102,103,104])

怎么办呢?

可以仿照TensorDataset写一个类似的类

class Mydataset(data.TensorDataset):
    def __init__(self, data, window):
        self.data = data
        self.window = window

    def __getitem__(self, index):
        x = self.data[index:index+self.window]
        return x

    def __len__(self):
        return len(self.data) - self.window

承接example1

data_set = data.TensorDataset(tensor1,tensor2)
d2 = Mydataset(data_set,3)

data_iter = data.DataLoader(d2,batch_size=3,shuffle=False)
for x_batch, y_batch in data_iter:
    print('-----------------')
    dsp(x_batch)
    dsp(y_batch)
    print('-----------------')

部分输出结果为:

Example3:

直接上图吧

 

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值