首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义数据集(2个类)测试阶段错误运行模型(MXNet框架)

自定义数据集(2个类)测试阶段错误运行模型(MXNet框架)
EN

Stack Overflow用户
提问于 2018-01-29 10:18:41
回答 1查看 84关注 0票数 0

我正在为我自己的数据集运行一个模型(该项目是为使用ImageNet进行培训/测试而实现的),其中包含两个类。我已经做了所有的更改(在配置文件等中),但是在完成培训(成功)之后,在开始测试时会出现以下错误:

代码语言:javascript
复制
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文件名,这些文件名为神经网络(如果这很重要的话),并且训练完成得很好。这是我第一次在深度学习中运行一个项目,所以请展示一些理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-04 18:29:27

MXNet通常直接使用pickle以外的其他方法来序列化模型体系结构和训练权重。

使用胶子API,您可以使用.save_params()将模型的权重保存到文件(即块)中,然后使用.load_params()从文件中加载权重。您可以通过保留用于定义模型的代码来“保存”模型体系结构。请参阅此这里的示例。

使用Module,您可以在每个时代的末尾创建检查点,这将保存符号(即模型体系结构)和参数(即模型权重)。见这里

代码语言:javascript
复制
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 )

代码语言:javascript
复制
sym, arg_params, aux_params = mx.model.load_checkpoint(model_prefix, 42)
mod.set_params(arg_params, aux_params)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48498920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档