weixin_51793354 2022-10-24 14:12 采纳率: 54.5%
浏览 96
已结题

pytorch 的dataloader使用一个epoch后需要重新“装载”么?

pytorch 的dataloader使用一个epoch后需要重新“装载”么?
我这样的代码有问题么

    data_train = Weibo_Dataset("./data/train/", train=True)
    train_loader = DataLoader(data_train, batch_size=batch_size, shuffle=True)
    for epoch in range(epochs):
        train_loop(train_loader, model, loss_fn, optimizer)
    print("Done!")

需要像下面这样么?

    data_train = Weibo_Dataset("./data/train/", train=True)
    for epoch in range(epochs):
        train_loader = DataLoader(data_train, batch_size=batch_size, shuffle=True)
        train_loop(train_loader, model, loss_fn, optimizer)
    print("Done!")

下面是train_loop函数的定义

    def train_loop(dataloader, model, loss_fn, optimizer):
        model.train()
        size = len(dataloader.dataset)
        for batch, (X, y) in enumerate(dataloader):
            X = get_feature_vector(X, time_step)
            X = X.to(device)
            y = y.to(device)
            # Compute prediction and loss
            pred = model(X)
            loss = loss_fn(pred, y)
            # Backpropagation
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
            if batch % 1 == 0:
                loss, current = loss.item(), batch * len(X)
                print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")
            pass

  • 写回答

2条回答 默认 最新

  • ·星辰大海 2022-10-24 15:00
    关注

    你的数据很多吗? 一般情况下是不需要的,DataLoader本身是个可迭代的东西,如果设计得当的话大部分情况是不需要多次加载的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月24日
  • 已采纳回答 10月24日
  • 修改了问题 10月24日
  • 赞助了问题酬金15元 10月24日
  • 展开全部

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?