我正在为我自己的数据集运行一个模型(该项目是为使用ImageNet进行培训/测试而实现的),其中包含两个类。我已经做了所有的更改(在配置文件等中),但是在完成培训(成功)之后,在开始测试时会出现以下错误:
wrote gt roidb to ./data/cache/ImageNetVID_DET_val_gt_roidb.pkl
Traceback (most recent call last):
File "experiments/dff_rfcn/dff_rfcn_end2end_train_test.py", line 20, in <module>
test.main()
File "experiments/dff_rfcn/../../dff_rfcn/test.py", line 53, in main
args.vis, args.ignore_cache, args.shuffle, config.TEST.HAS_RPN, config.dataset.proposal, args.thresh, logger=logger, output_path=final_output_path)
File "experiments/dff_rfcn/../../dff_rfcn/function/test_rcnn.py", line 68, in test_rcnn
roidbs_seg_lens[gpu_id] += x['frame_seg_len']
KeyError: 'frame_seg_len'在运行之前,我清理了缓存文件。正如我在前面的主题中所读过的,这可能是缓存中以前的数据集.pkl文件的问题。是什么导致了这个错误?我还想提到,我更改了.txt文件名,这些文件名为神经网络(如果这很重要的话),并且训练完成得很好。这是我第一次在深度学习中运行一个项目,所以请展示一些理解。
发布于 2018-05-04 18:29:27
MXNet通常直接使用pickle以外的其他方法来序列化模型体系结构和训练权重。
使用胶子API,您可以使用.save_params()将模型的权重保存到文件(即块)中,然后使用.load_params()从文件中加载权重。您可以通过保留用于定义模型的代码来“保存”模型体系结构。请参阅此这里的示例。
使用Module,您可以在每个时代的末尾创建检查点,这将保存符号(即模型体系结构)和参数(即模型权重)。见这里。
checkpoint = mx.callback.do_checkpoint(model_prefix)
mod = mx.mod.Module(symbol=net)
mod.fit(train_iter, num_epoch=5, epoch_end_callback=checkpoint)然后,您可以加载给定检查点的模型(例如,本例中的42 )
sym, arg_params, aux_params = mx.model.load_checkpoint(model_prefix, 42)
mod.set_params(arg_params, aux_params)https://stackoverflow.com/questions/48498920
复制相似问题