pytorch 入门学习加载数据集

pytorch 入门学习加载数据集

import  torch
import numpy  as np
import  torchvision
import  numpy as np
from  torch.utils.data import Dataset
from  torch.utils.data import DataLoader

import  torch.nn.functional as F
import matplotlib.pyplot as plt



class DiabetesDataset(Dataset):
    def __init__(self, filepath):
        xy = np.loadtxt('diabetes.csv.gz', delimiter=',', dtype=np.float32)
        self.len = xy.shape[0]
        self.x_data = torch.from_numpy(xy[:, :-1])  # -1 表示最后一列不要
        self.y_data = torch.from_numpy(xy[:, [-1]])
    def __getitem__(self, index):
        return self.x_data[index],self.y_data[index]
    def __len__(self):
        return self.len

dataset = DiabetesDataset('diabetes.csv.gz')
train_loder = DataLoader(dataset=dataset,
                         batch_size=32,
                         shuffle=True,
                         num_workers=2)

class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)
        self.relu = torch.nn.ReLU()      #torch.nn.Sigmoid()
        self.sigmoid  = torch.nn.Sigmoid()

    def forward(self,x):
        x = self.relu(self.linear1(x))
        x = self.relu(self.linear2(x))
        x = self.sigmoid(self.linear3(x))   #使用 ReLU + Sigmoid 的结合, 最后一层嵌套 Sigmoid
        return  x

model = Model()

criterion = torch.nn.BCELoss(size_average=True)
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

if __name__ == '__main__':

    for epoch in range(100):
        for i,data in enumerate(train_loder,0):
            #1. prepare data
            inputs,labels = data
            #2. Forward
            y_pred = model(inputs)
            loss = criterion(y_pred,labels)
            print(epoch,loss.item())
            #3. Backward
            optimizer.zero_grad()
            loss.backward()
            #4. Update
            optimizer.step()



#outs:
96 0.6488460302352905
96 0.6837149858474731
96 0.6773790717124939
96 0.5895138382911682
96 0.6454289555549622
96 0.6540895700454712
96 0.634219229221344
96 0.5071176886558533
96 0.6521698832511902
96 0.5890663862228394
96 0.6260353326797485
96 0.6036486625671387
96 0.6821258068084717
96 0.6444405913352966
96 0.7117087244987488
96 0.6727374792098999
96 0.5942217707633972
96 0.572909951210022
96 0.5683532953262329
96 0.5906638503074646
96 0.5729745626449585
96 0.6592338681221008
96 0.5666840672492981
96 0.5628921389579773
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
97 0.5504413843154907
97 0.5592724680900574
97 0.6298409700393677
97 0.5115721821784973
97 0.5389221906661987
97 0.5870144963264465
97 0.5902682542800903
97 0.6780911684036255
97 0.6389861702919006
97 0.7095761895179749
97 0.6540379524230957
97 0.6255027055740356
97 0.6726484298706055
97 0.6435151100158691
97 0.6405020952224731
97 0.6269117593765259
97 0.6627392172813416
97 0.6168067455291748
97 0.6124289035797119
97 0.713973879814148
97 0.5994608402252197
97 0.5881710648536682
97 0.6652423143386841
97 0.5875065922737122
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
98 0.6116299033164978
98 0.6460859179496765
98 0.6689874529838562
98 0.5503941774368286
98 0.6141761541366577
98 0.5878812074661255
98 0.692798376083374
98 0.5875721573829651
98 0.5414928793907166
98 0.6070823073387146
98 0.6634365916252136
98 0.6647754311561584
98 0.5649587512016296
98 0.5715025663375854
98 0.6386815905570984
98 0.5531622767448425
98 0.6154085993766785
98 0.6604638695716858
98 0.6641201972961426
98 0.5941271781921387
98 0.6185081005096436
98 0.6462123990058899
98 0.6671874523162842
98 0.685947060585022
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
D:\Anaconda3\envs\pcd\lib\site-packages\torch\nn\_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.
  warnings.warn(warning.format(ret))
99 0.5591648817062378
99 0.7278904914855957
99 0.5913693904876709
99 0.5824277400970459
99 0.6379620432853699
99 0.6897075176239014
99 0.5347273349761963
99 0.6482306718826294
99 0.7141227722167969
99 0.5258570313453674
99 0.6128413081169128
99 0.6075040698051453
99 0.521778404712677
99 0.6718929409980774
99 0.661381721496582
99 0.6632771492004395
99 0.6090944409370422
99 0.5503813624382019
99 0.6275145411491394
99 0.698398232460022
99 0.6591424345970154
99 0.5420821309089661
99 0.6173321604728699
99 0.634967565536499

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyTorch是一个开源的机器学习库,内置丰富的函数和工具包用于数据集加载、数据预处理、模型构建、训练和评估。数据集是机器学习模型的重要组成部分,PyTorch提供了多种方法用于加载数据集,包括内置的函数和可定制的方法,让用户可以根据自己的需求和数据集特性来选择适合的方式。 内置函数 PyTorch提供了内置的函数用于加载常见的数据集,如MNIST、CIFAR-10、ImageNet等。这些函数通常包括下载数据集、转换为Tensor格式、划分为训练集和测试集等步骤,使用简单方便,适合快速上手使用。 可定制方法 如果内置函数不能满足需求,PyTorch也提供了许多可定制的方法。最常用的是Dataset和DataLoader类。Dataset类是抽象类,用户需要继承这个类并实现getitem和len方法来定义自己的数据集。DataLoader类用于生成一个迭代器,用户可以设置批量大小、并行加载、随机采样等参数。 除此之外,PyTorch还提供了其它一些用于数据集处理的工具,如transforms模块、Sampler类、collate_fn函数等,可以用于数据增强、数据集分块和数据集拼接等场景。 总结 PyTorch提供了内置函数和可定制方法用于加载数据集,用户可以根据自己的需求和数据集特性来选择适合的方式。使用内置函数可以快速上手,使用可定制方法可以更加灵活和高效。对于多样化的数据集PyTorch还提供了多个处理工具,可以用于数据增强、数据集分块和数据集拼接等场景。 ### 回答2: PyTorch是一种基于Python的开源机器学习库,它可以用于构建各种机器学习模型。在PyTorch中,数据集加载是一个非常重要的部分,因为机器学习模型需要大量的数据来进行训练。 在PyTorch中,数据集加载可以通过DataLoader类来实现。DataLoader是一个Python迭代器,它可以加载大量的数据集,并将其分成小批量进行训练。这样可以避免一次性将整个数据集加载到内存中,从而节省内存空间。 首先,我们需要将数据集加载到内存或磁盘中,并将其转换为PyTorch数据集类的对象。PyTorch提供了两种数据集类:Dataset和IterableDataset。其中,Dataset类是一种基于索引的数据集类,它可以通过索引来访问数据集中的每个数据样本;而IterableDataset是一种基于迭代器的数据集类,它可以像Python中的迭代器一样使用。 然后,我们可以使用DataLoader类来加载数据集。DataLoader类有很多参数,包括batch_size(表示每个小批量包含的样本数)、shuffle(表示是否随机打乱数据集顺序)、num_workers(表示使用多少个工作线程来加载数据集)等。 在使用DataLoader类加载数据集时,我们可以通过for循环来迭代数据集中的每个小批量,并将其传递给机器学习模型进行训练。 总之,PyTorch数据集加载是非常灵活和易于使用的。通过使用DataLoader类和PyTorch提供的数据集类,我们可以轻松地加载和处理大量的数据集,并将其用于训练各种机器学习模型。 ### 回答3: Pytorch是一个使用Python作为开发语言的深度学习框架,提供了非常强大的数据加载和预处理工具。在Pytorch中,数据集加载主要通过两个类来实现,分别是Dataset和DataLoader。Dataset类负责加载和处理数据集,而DataLoader类则负责将处理后的数据安装指定的batch_size分批加载到内存中,避免了内存不足的问题。 Dataset类是一个抽象类,需要根据具体的数据集来实现其中的方法。一般而言,Dataset类中需要实现__len__()方法和__getitem__()方法,分别用来获取数据集的长度和获取具体的数据样本。 DataLoader类则负责对数据集进行batch处理,这样可以充分利用系统的存储和计算资源,提高了模型的训练速度。在使用DataLoader时,需要指定batch_size、shuffle和num_workers等参数,其中num_workers可以指定使用多少个进程来装载数据,从而进一步提高了数据装载的效率。 在数据集加载过程中,可以使用Pytorch提供的transforms模块来进行数据的预处理,如改变图像尺寸、随机翻转、归一化等操作,从而增加模型的泛化能力和准确性。 总之,Pytorch数据集加载和预处理方面提供了非常强大的工具,只需要实现一些简单的代码,就能轻松地完成数据的加载和预处理,从而为模型的训练和测试提供了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值