Input(Y) of elementwise op should not be null
Created by: ResearchingDexter
- 版本、环境信息: 1)PaddlePaddle版本:1.5.1 2)CPU/GPU:cpu 3)系统环境:MAC OS 10.13.6 4)Python版本号 3.6 5)显存信息 运行下面代码报错
main_program = fluid.Program()
start_program = fluid.Program()
with fluid.program_guard(main_program,start_program):
pred=fluid.layers.create_tensor('float32')
a=np.array([[4,-1,3,2]],np.float32).reshape([4,1])
fluid.layers.assign(a,pred)
zeros=fluid.layers.zeros_like(pred)
cond=fluid.layers.greater_than(pred,zeros)
ie=fluid.layers.IfElse(cond)
#b = fluid.layers.fill_constant(pred.shape, 'float32', 1.0)
with ie.true_block():
out=ie.input(pred)
b=fluid.layers.fill_constant(out.shape,'float32',1.0)
out=out+b
ie.output(out)
out=ie()[0]
exe=fluid.Executor(fluid.CPUPlace())
exe.run(start_program)
out=exe.run(main_program,fetch_list=[out.name])
print(out)
报错信息如下
Traceback (most recent call last):
File "/Users/baidu/PycharmProjects/Region Proposal by Guided Anchoring paddlepaddle/Models/Losses/test.py", line 40, in <module>
out=out+b
File "/opt/Anaconda/anaconda3/envs/paddle/lib/python3.6/site-packages/paddle/fluid/layers/math_op_patch.py", line 149, in __impl__
attrs={'axis': axis})
File "/opt/Anaconda/anaconda3/envs/paddle/lib/python3.6/site-packages/paddle/fluid/framework.py", line 1771, in append_op
attrs=kwargs.get("attrs", None))
File "/opt/Anaconda/anaconda3/envs/paddle/lib/python3.6/site-packages/paddle/fluid/framework.py", line 1164, in __init__
self.desc.infer_shape(self.block.desc)
paddle.fluid.core_avx.EnforceNotMet: Input(Y) of elementwise op should not be null. at [/home/teamcity/work/ef54dc8a5b211854/paddle/fluid/operators/elementwise/elementwise_op.h:41]
PaddlePaddle Call Stacks:
0 0x127c06a7cp void paddle::platform::EnforceNotMet::Init<char const*>(char const*, char const*, int) + 636
1 0x127c067abp paddle::platform::EnforceNotMet::EnforceNotMet(std::exception_ptr, char const*, int) + 139
2 0x1289fbbd0p paddle::operators::ElementwiseOp::InferShape(paddle::framework::InferShapeContext*) const + 2912
3 0x127d69bd8p paddle::framework::OpDesc::InferShape(paddle::framework::BlockDesc const&) const + 1464
4 0x127cc3586p _ZZN8pybind1112cpp_function10initializeIZNS0_C1IvN6paddle9framework6OpDescEJRKNS4_9BlockDescEEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_KFT_DpT1_EDpRKT2_EUlPKS5_S8_E_vJSN_S8_EJS9_SA_SB_EEEvOSD_PFSC_SF_ESL_ENKUlRNS_6detail13function_callEE_clESU_ + 198
5 0x127beba08p pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 3400
6 0x1067b700ap _PyCFunction_FastCallDict + 362
7 0x10673e1d1p _PyObject_FastCallKeywords + 385
8 0x10688c488p call_function + 392
9 0x106889ef2p _PyEval_EvalFrameDefault + 46818
10 0x10687d659p _PyEval_EvalCodeWithName + 425
11 0x10688d02cp _PyFunction_FastCallDict + 364
12 0x106736020p _PyObject_FastCallDict + 320
13 0x10675d658p method_call + 136
14 0x10673d63ep PyObject_Call + 62
15 0x1067de445p slot_tp_init + 117
16 0x1067e2981p type_call + 241
17 0x106735f91p _PyObject_FastCallDict + 177
18 0x10673e197p _PyObject_FastCallKeywords + 327
19 0x10688c488p call_function + 392
20 0x106889fa2p _PyEval_EvalFrameDefault + 46994
21 0x10687d659p _PyEval_EvalCodeWithName + 425
22 0x10688c7eap fast_function + 362
23 0x10688c3ecp call_function + 236
24 0x106889fa2p _PyEval_EvalFrameDefault + 46994
25 0x10687d659p _PyEval_EvalCodeWithName + 425
26 0x10688d02cp _PyFunction_FastCallDict + 364
27 0x106736020p _PyObject_FastCallDict + 320
28 0x10675d658p method_call + 136
29 0x10673d63ep PyObject_Call + 62
30 0x1067e2106p call_maybe + 262
31 0x1067dec59p slot_nb_add + 89
32 0x106738529p binary_op1 + 73
33 0x106882308p _PyEval_EvalFrameDefault + 15096
34 0x10687d659p _PyEval_EvalCodeWithName + 425
35 0x1068d610cp PyRun_FileExFlags + 252
36 0x1068d55e4p PyRun_SimpleFileExFlags + 372
37 0x1068fc2a6p Py_Main + 3734
38 0x10672e009p main + 313
39 0x7fff53d30015p start + 1
在IfElse中不可以这样做吗?