为了账号安全,请及时绑定邮箱和手机立即绑定

缩进错误。我完全不知所措

缩进错误。我完全不知所措

慕容3067478 2023-06-27 14:42:10
我已经手动将整个事情间隔开。尽管如此,它还是行不通。第一行之后直接出现缩进错误。代码:def train_epoch(model, data_loader, loss_fn, optimizer, device, scheduler, n_examples):""" docstring? """losses = []for d in data_loader:    input_ids = d['input_ids'].to(device)    targets = d['targets'].to(device)    outputs = model(input_ids = input_ids, labels = targets)    loss = loss_fn(outputs, targets)    losses.append( loss.item() )    loss.backward()    optimizer.step()    scheduler.step()    optimizer.zero_grad()return np.mean(losses)错误:def train_epoch(模型、data_loader、loss_fn、优化器、设备、调度器、n_examples): ...文件“”,第 2 行 ^ IndentationError:需要缩进块到底是怎么回事?我没有看到任何地方有问题。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

def train_epoch(model, data_loader, loss_fn, optimizer, device, scheduler, n_examples):

    """

    docstring?

    """

    losses = []

    for d in data_loader:

        input_ids = d['input_ids'].to(device)

        targets = d['targets'].to(device)

        outputs = model(input_ids = input_ids, labels = targets)

        loss = loss_fn(outputs, targets)

        losses.append( loss.item() )

        loss.backward()

        optimizer.step()

        scheduler.step()

        optimizer.zero_grad()

    return np.mean(losses)

请像这样格式化。您的代码不在您的train_epoch()方法的缩进块下。


查看完整回答
反对 回复 2023-06-27
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我修改了它:for循环必须向右缩进才能使其函数代码运行或在函数内部,否则它不会被视为函数代码。此外,在这种情况下,损失列表必须位于 for 循环内部,而不是在其之前,也不能位于同一 for 循环级别。尝试一下然后告诉我。如果成功投票并回答:-)


def train_epoch(model, data_loader, loss_fn, optimizer, device, scheduler, n_examples):

   

      

      for d in data_loader:

        losses = []

        input_ids = d['input_ids'].to(device)

        targets = d['targets'].to(device)

        outputs = model(input_ids = input_ids, labels = targets)

        loss = loss_fn(outputs, targets)

        losses.append( loss.item() )

        loss.backward()

        optimizer.step()

        scheduler.step()

        optimizer.zero_grad()


        return np.mean(losses)


查看完整回答
反对 回复 2023-06-27
?
翻阅古今

TA贡献1780条经验 获得超5个赞

这是因为第一行。函数体必须缩进。


def train_epoch(model, data_loader, loss_fn, optimizer, device, scheduler, n_examples):

    """ docstring? """

    losses = []

    for d in data_loader:

        input_ids = d['input_ids'].to(device)

        targets = d['targets'].to(device)

        outputs = model(input_ids = input_ids, labels = targets)

        loss = loss_fn(outputs, targets)

        losses.append( loss.item() )

        loss.backward()

        optimizer.step()

        scheduler.step()

        optimizer.zero_grad()

    return np.mean(losses)


查看完整回答
反对 回复 2023-06-27
  • 3 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信