使用 sparse_lookup_table Operator 报错
Created by: everwind
`import numpy as np import paddle.fluid as fluid import paddle.fluid.initializer as initializer import paddle.fluid.core as core import paddle
def custom_reader(place): while True: yield [([1,2,3], 1)]
def main():
main_program = paddle.fluid.default_main_program()
startup_program = paddle.fluid.default_startup_program()
place = fluid.CPUPlace()
block = main_program.global_block()
scope = paddle.fluid.global_scope()
startup_program.global_block().create_parameter(dtype="float32", type = core.VarDesc.VarType.SELECTED_ROWS, shape=[100, 8], name="W", with_initializer=True)
block.create_parameter(dtype="float32", type = core.VarDesc.VarType.SELECTED_ROWS, shape=[100, 8], name="W", initializer=initializer.MSRAInitializer())
user_feats = fluid.layers.data(name="user_feats", shape=[1], dtype="int64", lod_level=1)
y_ = fluid.layers.data(name="label", shape=[1], dtype="int64")
out_val = block.create_var(name="Out", dtype='float32')
#lookup_table = Operator("lookup_sparse_table", W='W', Ids='user_feats', Out='Out', min=-5.0, max=10.0, seed=10)
block.append_op(type="lookup_sparse_table", inputs={'Ids': block.vars["user_feats"], "W":block.vars["W"] }, outputs={"Out": out_val} )
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
train_reader = custom_reader(place)
feeder = fluid.DataFeeder(place=place, feed_list=[user_feats, y_])
for pass_id in range(1):
for batch_id, data in enumerate(train_reader):
print(data)
loss = exe.run(
fluid.framework.default_main_program(),
feed=feeder.feed(data),
fetch_list=[out_val])
#print("Cur Cost : %f" % (np.array(loss[0])[0]))
print(loss)
if name == "main": main() `
报错信息: EnforceNotMetTraceback (most recent call last) in () 47 48 if name == "main": ---> 49 main() 50
in main() 31 32 exe = fluid.Executor(place) ---> 33 exe.run(fluid.default_startup_program()) 34 35 train_reader = custom_reader(place)
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/executor.pyc in run(self, program, feed, fetch_list, feed_var_name, fetch_var_name, scope, return_numpy, use_program_cache) 438 fetch_list=fetch_list, 439 feed_var_name=feed_var_name, --> 440 fetch_var_name=fetch_var_name) 441 442 self._feed_data(program, feed, feed_var_name, scope)
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/executor.pyc in _add_feed_fetch_ops(self, program, feed, fetch_list, feed_var_name, fetch_var_name) 286 def _add_feed_fetch_ops(self, program, feed, fetch_list, feed_var_name, 287 fetch_var_name): --> 288 tmp_program = program.clone() 289 290 global_block = tmp_program.global_block()
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/framework.pyc in clone(self, for_test) 1466 p.sync_with_cpp() 1467 -> 1468 p.copy_param_info_from(self) 1469 p.copy_data_info_from(self) 1470 return p
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/framework.pyc in copy_param_info_from(self, other) 1678 raise ValueError("copy_param_info_from should be invoked with two " 1679 "program, with represent the same topology") -> 1680 self.global_block().copy_param_info_from(other.global_block()) 1681 1682 def copy_data_info_from(self, other):
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/framework.pyc in copy_param_info_from(self, other) 1188 dtype=v.dtype, 1189 type=v.type, -> 1190 lod_level=v.lod_level, 1191 stop_gradient=p.stop_gradient, 1192 trainable=p.trainable,
/data1/ianma/anaconda2/lib/python2.7/site-packages/paddle/fluid/framework.pyc in lod_level(self) 334 @property 335 def lod_level(self): --> 336 return self.desc.lod_level() 337 338 @property
EnforceNotMet: Getting 'lod_level' is not supported by the type of var W. at [/paddle/paddle/fluid/framework/var_desc.cc:196] PaddlePaddle Call Stacks: 0 0x7fb5d5cf7736p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486 1 0x7fb5d5d78062p paddle::framework::VarDesc::GetLoDLevel() const + 162 2 0x7fb5d5d5c6afp void pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<int, paddle::framework::VarDesc, , pybind11::name, pybind11::is_method, pybind11::sibling>(int (paddle::framework::VarDesc::)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(paddle::framework::VarDesc const)#1 (closed)}, int, paddle::framework::VarDesc const*, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::cpp_function::initialize<int, paddle::framework::VarDesc, , pybind11::name, pybind11::is_method, pybind11::sibling>(int (paddle::framework::VarDesc::)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(paddle::framework::VarDesc const)#1 (closed)}&&, int ()(paddle::framework::VarDesc const), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3 (closed)}::_FUN(pybind11::detail::function_call) + 143 3 0x7fb5d5d07604p pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 2596 4 0x7fb6215a4eecp PyEval_EvalFrameEx + 33468 5 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 6 0x7fb62152efdap 7 0x7fb62150a773p PyObject_Call + 67 8 0x7fb62150a85cp 9 0x7fb62150a952p PyObject_CallFunction + 146 10 0x7fb621546c94p _PyObject_GenericGetAttrWithDict + 180 11 0x7fb6215a19cbp PyEval_EvalFrameEx + 19867 12 0x7fb6215a4dacp PyEval_EvalFrameEx + 33148 13 0x7fb6215a4dacp PyEval_EvalFrameEx + 33148 14 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 15 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 16 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 17 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 18 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 19 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 20 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 21 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 22 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 23 0x7fb6215a670ap PyEval_EvalCode + 26 24 0x7fb6215a30c0p PyEval_EvalFrameEx + 25744 25 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 26 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 27 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 28 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 29 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 30 0x7fb62152f0c7p 31 0x7fb62150a773p PyObject_Call + 67 32 0x7fb62159f4d0p PyEval_EvalFrameEx + 10400 33 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 34 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 35 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 36 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 37 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 38 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 39 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 40 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 41 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 42 0x7fb62152f0c7p 43 0x7fb62150a773p PyObject_Call + 67 44 0x7fb62159f4d0p PyEval_EvalFrameEx + 10400 45 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 46 0x7fb62152f0c7p 47 0x7fb62150a773p PyObject_Call + 67 48 0x7fb62159f4d0p PyEval_EvalFrameEx + 10400 49 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 50 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 51 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 52 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 53 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 54 0x7fb62152f0c7p 55 0x7fb62150a773p PyObject_Call + 67 56 0x7fb62159f4d0p PyEval_EvalFrameEx + 10400 57 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 58 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 59 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 60 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 61 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 62 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 63 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 64 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 65 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 66 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 67 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 68 0x7fb6215a670ap PyEval_EvalCode + 26 69 0x7fb6215a30c0p PyEval_EvalFrameEx + 25744 70 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 71 0x7fb6215a3482p PyEval_EvalFrameEx + 26706 72 0x7fb6215a64e9p PyEval_EvalCodeEx + 2025 73 0x7fb62152efdap 74 0x7fb62150a773p PyObject_Call + 67 75 0x7fb6215d3030p 76 0x7fb6215d36eep Py_Main + 1374 77 0x7fb6207fcb35p __libc_start_main + 245 78 0x7fb621ac187fp