美文网首页
Pytorch如何划分训练集和测试集

Pytorch如何划分训练集和测试集

作者: 一位学有余力的同学 | 来源:发表于2022-09-14 15:55 被阅读0次

    如果我们使用scikit-learn库,可以使用如下方法划分训练集和测试集:

    from sklearn.model_selection import train_test_split
    
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
    

    如果我们不使用该库,在pytorch中还有一种可以划分训练接和测试集的方法。如下:

    import numpy as np
    from torch.utils.data import DataLoader, SubsetRandomSampler
    
    # 首先产生数据索引的乱序排列
    shuffled_indices = np.random.permutation(len(data))
    train_idx = shuffled_indices[:int(0.8*len(data))]
    val_idx = shulled_indices[int(0.8*len(data)):]
    
    train_loader = DataLoader(data, batch_size = 32, drop_last = True, sampler = SubserRandomSampler(train_idx))
    val_loader = DataLoader(data, batch_size = 32, drop_last=False, sampler=SubsetRandomSampler(val_idx))
    

    Pytorch中也有一个类似于Numpy中random.permutation的函数:torch.randperm

    如果我们并不想使用所有的数据进行训练,需要从中随机挑选一部分,比如从中挑选1000个样本进行训练,则可以使用如下方法:

    import random
    
    train_idx = random.sample(len(data), 1000)
    train_loader = DataLoader(data, batch_size = 32, drop_last = True, sampler = SubserRandomSampler(train_idx))
    

    这里的SuberRandomSampler是一种子集随机采样方式,传入的是data的随机索引。更多的sampler使用方法可以参考docs

    References:

    Pytorch Docs: torch.utils.data

    相关文章

      网友评论

          本文标题:Pytorch如何划分训练集和测试集

          本文链接:https://www.haomeiwen.com/subject/nyxlortx.html