请问在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
收藏
请登录后评论