繁体   English   中英

在 PyTorch 中部分训练后添加样本

[英]Add Samples after Partial Training in PyTorch

我在 PyTorch 中训练了 model - 用于文本分类的 RCNN。 model 具有非常高的精度和召回率,但我最终可能会收到带有文本的新文档,这与我过去训练、验证或测试 model 不同。

我想将新的文本样本添加到 model 而不从一开始就重新训练 model。 这是可取的,因为我可能无法访问一些用于初始培训的文本。

如果无法添加样本(文档),是否可以仅在新样本上训练新的 model,然后以某种方式组合原始 model 和新的 Z20F35E630DAF44DBFA4C3F68F5399D8C? 如何?

这是我的 model 的样子。

RCNN(
  (embeddings): Embedding(10661, 300)
  (lstm): LSTM(300, 64, bidirectional=True)
  (dropout): Dropout(p=0.0, inplace=False)
  (W): Linear(in_features=428, out_features=64, bias=True)
  (tanh): Tanh()
  (fc): Linear(in_features=64, out_features=3, bias=True)
  (softmax): Softmax(dim=1)
  (loss_op): NLLLoss()
)

我知道保存 model 的技术和相应的加载技术。

  • State 字典: torch.save(model.state_dict(), PATH)
  • Model: torch.save(model, PATH)
  • 检查点: torch.save({'epoch': EPOCH, 'model_state_dict': net.state_dict(), 'optimizer_state_dict': optimizer.state_dict(), 'loss': LOSS,}, PATH)

我可以在原始样本的基础上继续训练,但我不知道如何添加样本。

如果这是 TensorFlow 可以通过 PyTorch 做的事情,我可能会切换到 TensorFlow。

假设您将模型的 state 保存在某个文件PATH中,您可以使用 torch.load 将其加载回torch.load中。 在 CPU 或 CUDA 设备上,默认情况下它将加载到调用torch.save时所在的设备上)。

state_dict = torch.load(PATH)
model.load_state_dict(state_dict)

假设model是用于将 state 保存在PATH上的相同nn.Module class 的实例。 现在model将具有与使用 torch.save 保存在PATH上时相同的torch.save (相同的参数权重/偏差)。 从那里您可以调用model并对新数据进行微调。

注意:您可以通过将torch.device传递给torch.loadmap_location参数来直接将其加载到所需的设备上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM