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

我已经手动将整个事情间隔开。尽管如此,它还是行不通。第一行之后直接出现缩进错误。


代码:


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:需要缩进块


到底是怎么回事?我没有看到任何地方有问题。


慕容3067478
浏览 137回答 3
3回答

ibeautiful

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()方法的缩进块下。

慕田峪4524236

我修改了它: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)

翻阅古今

这是因为第一行。函数体必须缩进。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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python