You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行BERT微调代码报data_volume下模型不存在的FileNotFoundError如何解决

错误根因
  • torch.save() 本身不具备自动创建父目录的能力,你代码中指定的保存路径data_volume/finetuned_BERT_epoch_{epoch}.model依赖的data_volume文件夹不存在,是触发本次报错的核心原因
  • 额外可能的诱因:路径拼写错误、运行代码时的当前工作目录和预期不符导致相对路径定位失败
修复方案

在执行模型保存逻辑前,先主动创建需要的目录,用exist_ok=True参数避免目录已存在时抛出报错,也可以根据需求替换为绝对路径、或用os.path.join拼接路径降低跨平台寻址错误概率。

修正后完整代码
import os
# 其余原有导入逻辑保持不变

# 提前创建模型保存目录,exist_ok=True表示目录已存在时不抛出错误
os.makedirs("data_volume", exist_ok=True)

# 原有训练逻辑仅需调整保存路径的兼容写法,其余保持不变
for epoch in tqdm(range(1, epochs+1)):
    
    model.train()
    
    loss_train_total = 0

    progress_bar = tqdm(dataloader_train, desc='Epoch {:1d}'.format(epoch), leave=False, disable=False)
    for batch in progress_bar:

        model.zero_grad()
        
        batch = tuple(b.to(device) for b in batch)
        
        inputs = {'input_ids':      batch[0],
                  'attention_mask': batch[1],
                  'labels':         batch[2],
                 }       

        outputs = model(**inputs)
        
        loss = outputs[0]
        loss_train_total += loss.item()
        loss.backward()

        torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)

        optimizer.step()
        scheduler.step()
        
        progress_bar.set_postfix({'training_loss': '{:.3f}'.format(loss.item()/len(batch))})
        
    # 跨平台更稳妥的写法是用os.path.join拼接路径,避免不同系统斜杠规则差异导致的错误
    torch.save(model.state_dict(), os.path.join("data_volume", f"finetuned_BERT_epoch_{epoch}.model"))
        
    tqdm.write(f'\nEpoch {epoch}')
    
    loss_train_avg = loss_train_total/len(dataloader_train)            
    tqdm.write(f'Training loss: {loss_train_avg}')
    
    val_loss, predictions, true_vals = evaluate(dataloader_validation)
    val_f1 = f1_score_func(predictions, true_vals)
    tqdm.write(f'Validation loss: {val_loss}')
    tqdm.write(f'F1 Score (Weighted): {val_f1}')

内容的提问来源于stack exchange,提问作者Tahir Ullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:18:03