3 回答
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
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()方法的缩进块下。
![?](http://img1.sycdn.imooc.com/545862370001b03502200220-100-100.jpg)
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)
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
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)
添加回答
举报