如何测试保存在 .pth.tar 文件中的训练模型?
How to test a trained model saved in .pth.tar files?
我正在使用 CORnet-Z 并构建一个单独的测试文件。
模型似乎保存为 .pth.tar 文件
if FLAGS.output_path is not None:
records.append(results)
if len(results) > 1:
pickle.dump(records, open(os.path.join(FLAGS.output_path, 'results.pkl'),
'wb'))
ckpt_data = {}
ckpt_data['flags'] = FLAGS.__dict__.copy()
ckpt_data['epoch'] = epoch
ckpt_data['state_dict'] = model.state_dict()
ckpt_data['optimizer'] = trainer.optimizer.state_dict()
if save_model_secs is not None:
if time.time() - recent_time > save_model_secs:
torch.save(ckpt_data, os.path.join(FLAGS.output_path,
'latest_checkpoint.pth.tar'))
recent_time = time.time()
加载此模型并运行评估和测试的最佳方法是什么?
def load_checkpoint(checkpoint, model, optimizer = None):
if not os.path.exists(checkpoint):
raise("File does not exists {}".format(checkpoint))
checkpoint = torch.load(checkpoint)
model.load_state_dict(checkpoint['state_dict'])
if optimizer:
optimizer.load_state_dict(checkpoint['optim_dict'])
return checkpoint
要测试模型,您需要加载经过训练的模型和优化器(如果适用)的状态字典。但是,如果您要从某个点恢复训练并且您正在使用任何类型的调度程序,您也需要加载调度程序状态。
我正在使用 CORnet-Z 并构建一个单独的测试文件。
模型似乎保存为 .pth.tar 文件
if FLAGS.output_path is not None:
records.append(results)
if len(results) > 1:
pickle.dump(records, open(os.path.join(FLAGS.output_path, 'results.pkl'),
'wb'))
ckpt_data = {}
ckpt_data['flags'] = FLAGS.__dict__.copy()
ckpt_data['epoch'] = epoch
ckpt_data['state_dict'] = model.state_dict()
ckpt_data['optimizer'] = trainer.optimizer.state_dict()
if save_model_secs is not None:
if time.time() - recent_time > save_model_secs:
torch.save(ckpt_data, os.path.join(FLAGS.output_path,
'latest_checkpoint.pth.tar'))
recent_time = time.time()
加载此模型并运行评估和测试的最佳方法是什么?
def load_checkpoint(checkpoint, model, optimizer = None):
if not os.path.exists(checkpoint):
raise("File does not exists {}".format(checkpoint))
checkpoint = torch.load(checkpoint)
model.load_state_dict(checkpoint['state_dict'])
if optimizer:
optimizer.load_state_dict(checkpoint['optim_dict'])
return checkpoint
要测试模型,您需要加载经过训练的模型和优化器(如果适用)的状态字典。但是,如果您要从某个点恢复训练并且您正在使用任何类型的调度程序,您也需要加载调度程序状态。