pytorch入门第七课——数据集加载器

前言

b站刘洪普老师的pytorch入门课笔记。记录学习。
本文内容为数据集的加载器示例。

Mini-Batch中常见的词汇:

1、Epoch:训练阶段一次前馈和方向传播
2、Batch-size:训练阶段一次前向和方向传播的训练样本的数量
3、Iteration:假设样本总数为1w,Batch-size为1000,那么Iteration = 10000/1000 = 10

import torch
from torch.utils.data import Dataset #Dataset是一个抽象类,不能实例化
from torch.utils.data import DataLoader#而DataLoader则可以实例化
 
class DiabetesDataset(Dataset):
    def _init_(self,filepath):
        xy = np.loadtxt(filepath,delimiter=',',dtype = np.float32)
        self.len = xy.shape[0]
        self.x_data = torch.from_numpy(xy[:,:-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.ga')
train_loader = DataLoader(dataset = dataset,
                          batch_size = 32,
                          shuffle = True,
                          num_workers=2)
 
 
class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        #self.linear = torch.nn.Linear(8,1)     #直接8维输入,1维输出的二分类模型 对应的w为8*1的向量。
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)    #从8->4->1维
 
        self.sigmoid = torch.nn.Sigmoid()     #这里的激活函数可以选择很多,也可以用Sign()、Linear()、ReLU()等。  要改成:self.activate = torch.nn.ReLU().
 
 
    def forward(self, x):
        # x = self.sigmoid(self.linear(x))    #直接输入8->1
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        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_loader,0):  #这里的0表示从下标0开始训练
            #.准备数据 ,inputs相当于x,labels相当于y
            inputs,labels = data
            #.forward
            y_pred = model(inputs)
            loss = criterion(y_pred,labels)
            print(epoch,i,loss.item())
            
            #.backward
            optimizer.zero_grad()
            loss.backward()
            
            #.update
            optimizer.step()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂java杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值