[英]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 的技术和相应的加载技术。
torch.save(model.state_dict(), PATH)
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.load
的map_location
参数来直接将其加载到所需的设备上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.