EOFError:出于情感分析模型而在Google Colab中用尽了

问题描述

我正在尝试使用Pytorch对IMDB数据集进行情感分析。在google colab上运行它会给我一个错误

EOFError                                  Traceback (most recent call last)
<ipython-input-11-1af666a9752f> in <module>()
     38   # Infer from BERT
     39   else:
---> 40     model.load_state_dict(torch.load(path))
     41     sentiment = predict_sentiment(model,tokenizer,TEXT)
     42     print(sentiment)

1 frames
/usr/local/lib/python3.6/dist-packages/torch/serialization.py in load(f,map_location,pickle_module,**pickle_load_args)
    593                     return torch.jit.load(opened_file)
    594                 return _load(opened_zipfile,**pickle_load_args)
--> 595         return _legacy_load(opened_file,**pickle_load_args)
    596 
    597 

/usr/local/lib/python3.6/dist-packages/torch/serialization.py in _legacy_load(f,**pickle_load_args)
    762             "functionality.")
    763 
--> 764     magic_number = pickle_module.load(f,**pickle_load_args)
    765     if magic_number != MAGIC_NUMBER:
    766         raise RuntimeError("Invalid magic number; corrupt file?")

EOFError: Ran out of input

以下是主要代码。我怀疑该错误是否与我使用的路径有关。请让我知道有关在Colab中正确设置路径的信息。

if __name__ == "__main__":
  
  # Train BERT
  if TRAIN:
    # load data
    train_iter,valid_iter,test_iter = load_data()

    optimizer = optim.Adam(model.parameters())
    criterion = nn.BCEWithLogitsLoss().to(device)
    model = model.to(device)

    best_val_loss = float('inf')

    for epoch in range(N_EPOCHS):
      # start time
      start_time = time.time()
      # train for an epoch
      train_loss,train_acc = train(model,train_iter,optimizer,criterion)
      valid_loss,valid_acc = evaluate(model,criterion)
      # end time
      end_time = time.time()
      # stats
      epoch_mins,epoch_secs = epoch_time(start_time,end_time)
      # save model if has validation loss
      # better than last one
      if valid_loss < best_valid_loss:
        best_valid_loss = valid_loss
        torch.save(model.state_dict(),path)
      # stats
      print(f'Epoch: {epoch+1:02} | Epoch Time: {epoch_mins}m {epoch_secs}s')
      print(f'\tTrain Loss: {train_loss:.3f} | Train Acc: {train_acc*100:.2f}%')
      print(f'\t Val. Loss: {valid_loss:.3f} |  Val. Acc: {valid_acc*100:.2f}%')
    # Test
    model.load_state_dict(torch.load(path))
    test_loss,test_acc = evaluate(model,test_iter,criterion)
    print(f'Test Loss: {test_loss:.3f} | Test Acc: {test_acc*100:.2f}%')
  
  # Infer from BERT
  else:
    model.load_state_dict(torch.load(path))
    sentiment = predict_sentiment(model,TEXT)
    print(sentiment) ```
 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...