Python 如何在Colab中加载PyTorch函数中定义的已保存模型?

Python 如何在Colab中加载PyTorch函数中定义的已保存模型?,python,pytorch,torch,checkpoint,Python,Pytorch,Torch,Checkpoint,以下是我的培训功能的示例代码(删除了不必要的部分): 我正在尝试将我的模型数据\u gen保存在torch.save()中,运行train\u dmc函数后,我可以在目录中找到检查点文件 def train_dmc(loader,loss): data_gen = DataGenerator().to(device) data_gen_optimizer = optim.Rprop(para_list, lr=lrate) savepath='/content/driv

以下是我的培训功能的示例代码(删除了不必要的部分):

我正在尝试将我的模型数据\u gen保存在torch.save()中,运行train\u dmc函数后,我可以在目录中找到检查点文件

def train_dmc(loader,loss):


 
  data_gen = DataGenerator().to(device)

  data_gen_optimizer = optim.Rprop(para_list, lr=lrate)


  savepath='/content/drive/MyDrive/'+loss+'checkpoint.t7'
  state = {
            'epoch': epoch,
            'model_state_dict': data_gen.state_dict(),
            'optimizer_state_dict': data_gen_optimizer.state_dict(),
            'data loss': data_loss,
            'latent_loss':latent_loss
            }
  torch.save(state,savepath)
我的问题是,如果GoogleColab断开连接,如何加载检查点文件以继续培训

如果我加载数据\u gen训练dmc(),这是我第一次使用它,我真的很困惑,因为数据\u gen是在另一个函数中定义的。希望有人能帮我解释一下

data_gen.load_state_dict(torch.load(PATH))
data_gen.eval()

#or

train_dmc.load_state_dict(torch.load(PATH))
train_dmc.eval()

由于
状态
变量是一个字典,因此请尝试将其另存为:

with open('/content/checkpoint.t7', 'wb') as handle:
    pickle.dump(state, handle, protocol=pickle.HIGHEST_PROTOCOL)
将模型类初始化为
data\u gen=DataGenerator()。到(设备)

并将检查点文件加载为:

import pickle
file = open('/content/checkpoint.t7', 'rb')
loaded_state = pickle.load(file)
然后您可以使用
data\u gen=loaded\u state['model\u state\u dict']
加载
state\u dict
。这将把state_dict加载到model类中