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

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 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”