请问在Windows环境下训练的模型可以在Linux直接使用吗?
收藏
最近编译了一个Linxu预测库, 但是将Windows中已经训练好的模型移植过去使用出现了错误:
terminate called after throwing an instance of 'paddle::platform::EnforceNotMet'
what():
Compile Traceback (most recent call last):
File "tools/export_model.py", line 113, in
main()
File "tools/export_model.py", line 109, in main
run(FLAGS, cfg)
File "tools/export_model.py", line 77, in run
trainer.export(FLAGS.output_dir)
File "E:\paddle\PaddleDetection\ppdet\engine\trainer.py", line 574, in export
input_spec, static_model.forward.main_program,
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 534, in main_program
concrete_program = self.concrete_program
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 454, in concrete_program
return self.concrete_program_specify_input_spec(input_spec=None)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 488, in concrete_program_specify_input_spec
*desired_input_spec)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 402, in get_concrete_program
concrete_program, partial_program_layer = self._program_cache[cache_key]
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 711, in __getitem__
self._caches[item] = self._build_once(item)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 702, in _build_once
class_instance=cache_key.class_instance)
File "", line 2, in from_func_spec
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__
return wrapped_func(*args, **kwargs)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\base.py", line 40, in __impl__
return func(*args, **kwargs)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 652, in from_func_spec
outputs = static_func(*inputs)
File "C:\Users\ADMINI~1\AppData\Local\Temp\tmpahswjvev.py", line 27, in forward
false_fn_1, (), (), (out,))
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 210, in convert_ifelse
return _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 235, in _run_py_ifelse
return true_fn(*true_args) if pred else false_fn(*false_args)
File "E:\paddle\PaddleDetection\ppdet\modeling\architectures\meta_arch.py", line 28, in forward
out = self.get_pred()
File "E:\paddle\PaddleDetection\ppdet\modeling\architectures\faster_rcnn.py", line 104, in get_pred
bbox_pred, bbox_num = self._forward()
File "C:\Users\ADMINI~1\AppData\Local\Temp\tmplf_jv8zy.py", line 54, in _forward
rois, rois_num))
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 210, in convert_ifelse
return _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 235, in _run_py_ifelse
return true_fn(*true_args) if pred else false_fn(*false_args)
File "E:\paddle\PaddleDetection\ppdet\modeling\architectures\faster_rcnn.py", line 87, in _forward
im_shape, scale_factor)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\layers.py", line 898, in __call__
outputs = self.forward(*inputs, **kwargs)
File "C:\Users\ADMINI~1\AppData\Local\Temp\tmpw1yik1pb.py", line 38, in forward
bbox_num, bbox_pred))
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 210, in convert_ifelse
return _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 235, in _run_py_ifelse
return true_fn(*true_args) if pred else false_fn(*false_args)
File "E:\paddle\PaddleDetection\ppdet\modeling\post_process.py", line 67, in forward
bboxes, score = self.decode(head_out, rois, im_shape, scale_factor)
File "C:\Users\ADMINI~1\AppData\Local\Temp\tmp2gw6dwns.py", line 42, in __call__
origin_shape_list, rois_num])
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 42, in convert_while_loop
loop_vars = _run_paddle_while_loop(cond, body, loop_vars)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 52, in _run_paddle_while_loop
loop_vars = control_flow.while_loop(cond, body, loop_vars)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\layers\control_flow.py", line 1221, in while_loop
output_vars = body(*loop_vars)
File "E:\paddle\PaddleDetection\ppdet\modeling\layers.py", line 399, in __call__
[rois_num_per_im, 2])
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\tensor\manipulation.py", line 1490, in expand
type='expand_v2', inputs=inputs, outputs={'Out': out}, attrs=attrs)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\layer_helper.py", line 43, in append_op
return self.main_program.current_block().append_op(*args, **kwargs)
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\framework.py", line 3232, in append_op
attrs=kwargs.get("attrs", None))
File "D:\ProgramData\Anaconda3\envs\paddle\lib\site-packages\paddle\fluid\framework.py", line 2312, in __init__
for frame in traceback.extract_stack():
--------------------------------------
C++ Traceback (most recent call last):
--------------------------------------
0 paddle::AnalysisPredictor::ZeroCopyRun()
1 paddle::framework::NaiveExecutor::Run()
2 paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, paddle::platform::Place const&)
3 paddle::operators::WhileOp::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&) const
4 paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool)
5 paddle::framework::Executor::RunPartialPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, long, long, bool, bool, bool)
6 paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, paddle::platform::Place const&)
7 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&) const
8 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&, paddle::framework::RuntimeContext*) const
9 paddle::operators::ExpandV2Op::InferShape(paddle::framework::InferShapeContext*) const
10 paddle::platform::EnforceNotMet::EnforceNotMet(paddle::platform::ErrorSummary const&, char const*, int)
11 paddle::platform::GetCurrentTraceBackString()
----------------------
Error Message Summary:
----------------------
InvalidArgumentError: The 0th element of 'shape' for expand_v2 op must be greater than 0, but the value given is -2.
[Hint: Expected expand_shape[i] > 0, but received expand_shape[i]:-2 <= 0:0.] (at /home/quenwaz/downloads/Paddle/paddle/fluid/operators/expand_v2_op.cc:75)
[operator < expand_v2 > error]
Aborted
所以我怀疑是不是模型的问题, 还是源码本身存在问题。
我的模型训练是在Windows 10上基于PaddleDetection的python版本训练的。 后来在Linux CentOS 7.5中编译了Paddle Interface,基于GCC4.8.5。 好不容易编译完了整个PaddleDetection, 在调用main的时候报错如上。 怀疑人生。求解。
0
收藏
请登录后评论