-
问题描述:我根据文档编写机器翻译模型,出现了
Tensor holds the wrong type
-
报错信息:
---------------------------------------------------------------------------
EnforceNotMet Traceback (most recent call last)
<ipython-input-11-49ae4ab0d47c> in <module>()
5 num_epochs=EPOCH_NUM,
6 event_handler=event_handler,
----> 7 feed_order=feed_order)
~/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/contrib/trainer.py in train(self, num_epochs, event_handler, reader, feed_order)
403 else:
404 self._train_by_executor(num_epochs, event_handler, reader,
--> 405 feed_order)
406
407 def test(self, reader, feed_order):
~/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/contrib/trainer.py in _train_by_executor(self, num_epochs, event_handler, reader, feed_order)
481 exe = executor.Executor(self.place)
482 reader = feeder.decorate_reader(reader, multi_devices=False)
--> 483 self._train_by_any_executor(event_handler, exe, num_epochs, reader)
484
485 def _train_by_any_executor(self, event_handler, exe, num_epochs, reader):
~/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/contrib/trainer.py in _train_by_any_executor(self, event_handler, exe, num_epochs, reader)
510 fetch_list=[
511 var.name
--> 512 for var in self.train_func_outputs
513 ])
514 else:
~/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/executor.py in run(self, program, feed, fetch_list, feed_var_name, fetch_var_name, scope, return_numpy, use_program_cache)
468
469 self._feed_data(program, feed, feed_var_name, scope)
--> 470 self.executor.run(program.desc, scope, 0, True, True)
471 outs = self._fetch_data(fetch_list, fetch_var_name, scope)
472 if return_numpy:
EnforceNotMet: Tensor holds the wrong type, it holds i at [/Users/paddle/minqiyang/Paddle/paddle/fluid/framework/tensor_impl.h:29]
PaddlePaddle Call Stacks:
0 0x11f436a68p paddle::platform::EnforceNotMet::EnforceNotMet(std::exception_ptr, char const*, int) + 760
1 0x11f792f42p long long const* paddle::framework::Tensor::data<long long>() const + 258
2 0x11fc36fabp paddle::operators::LookupTableKernel<float>::Compute(paddle::framework::ExecutionContext const&) const + 331
3 0x11fc36e20p std::__1::__function::__func<paddle::framework::OpKernelRegistrarFunctor<paddle::platform::CPUPlace, false, 0ul, paddle::operators::LookupTableKernel<float>, paddle::operators::LookupTableKernel<double> >::operator()(char const*, char const*) const::'lambda'(paddle::framework::ExecutionContext const&), std::__1::allocator<paddle::framework::OpKernelRegistrarFunctor<paddle::platform::CPUPlace, false, 0ul, paddle::operators::LookupTableKernel<float>, paddle::operators::LookupTableKernel<double> >::operator()(char const*, char const*) const::'lambda'(paddle::framework::ExecutionContext const&)>, void (paddle::framework::ExecutionContext const&)>::operator()(paddle::framework::ExecutionContext const&) + 32
4 0x12025f223p paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) const + 659
5 0x12025b141p paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) + 577
6 0x11f5043a6p paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool) + 390
7 0x11f503dd3p paddle::framework::Executor::Run(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool) + 163
8 0x11f46a837p void pybind11::cpp_function::initialize<paddle::pybind::pybind11_init()::$_64, void, paddle::framework::Executor&, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool, pybind11::name, pybind11::is_method, pybind11::sibling>(paddle::pybind::pybind11_init()::$_64&&, void (*)(paddle::framework::Executor&, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::'lambda'(pybind11::detail::function_call&)::__invoke(pybind11::detail::function_call&) + 135
9 0x11f4413aap pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 5786
10 0x10f4b559fp PyCFunction_Call + 127
11 0x10f5807e7p PyEval_EvalFrameEx + 33207
12 0x10f576fafp _PyEval_EvalCodeWithName + 335
13 0x10f57d2a7p PyEval_EvalFrameEx + 19575
14 0x10f576fafp _PyEval_EvalCodeWithName + 335
15 0x10f57d2a7p PyEval_EvalFrameEx + 19575
16 0x10f57cfb8p PyEval_EvalFrameEx + 18824
17 0x10f576fafp _PyEval_EvalCodeWithName + 335
18 0x10f57d2a7p PyEval_EvalFrameEx + 19575
19 0x10f576fafp _PyEval_EvalCodeWithName + 335
20 0x10f5713b5p builtin_exec + 341
21 0x10f4b555ep PyCFunction_Call + 62
22 0x10f57cec7p PyEval_EvalFrameEx + 18583
23 0x10f576fafp _PyEval_EvalCodeWithName + 335
24 0x10f57d2a7p PyEval_EvalFrameEx + 19575
25 0x10f576fafp _PyEval_EvalCodeWithName + 335
26 0x10f57d2a7p PyEval_EvalFrameEx + 19575
27 0x10f576fafp _PyEval_EvalCodeWithName + 335
28 0x10f57d2a7p PyEval_EvalFrameEx + 19575
29 0x10f576fafp _PyEval_EvalCodeWithName + 335
30 0x10f4826aap function_call + 106
31 0x10f43eb35p PyObject_Call + 69
32 0x10f57dc9bp PyEval_EvalFrameEx + 22123
33 0x10f576fafp _PyEval_EvalCodeWithName + 335
34 0x10f57d2a7p PyEval_EvalFrameEx + 19575
35 0x10f576fafp _PyEval_EvalCodeWithName + 335
36 0x10f57d2a7p PyEval_EvalFrameEx + 19575
37 0x10f57cfb8p PyEval_EvalFrameEx + 18824
38 0x10f57cfb8p PyEval_EvalFrameEx + 18824
39 0x10f576fafp _PyEval_EvalCodeWithName + 335
40 0x10f4826aap function_call + 106
41 0x10f43eb35p PyObject_Call + 69
42 0x10f57dc9bp PyEval_EvalFrameEx + 22123
43 0x10f576fafp _PyEval_EvalCodeWithName + 335
44 0x10f4826aap function_call + 106
45 0x10f43eb35p PyObject_Call + 69
46 0x10f57dc9bp PyEval_EvalFrameEx + 22123
47 0x10f576fafp _PyEval_EvalCodeWithName + 335
48 0x10f57d2a7p PyEval_EvalFrameEx + 19575
49 0x10f57cfb8p PyEval_EvalFrameEx + 18824
50 0x10f576fafp _PyEval_EvalCodeWithName + 335
51 0x10f4826aap function_call + 106
52 0x10f43eb35p PyObject_Call + 69
53 0x10f57dc9bp PyEval_EvalFrameEx + 22123
54 0x10f576fafp _PyEval_EvalCodeWithName + 335
55 0x10f57d2a7p PyEval_EvalFrameEx + 19575
56 0x10f576fafp _PyEval_EvalCodeWithName + 335
57 0x10f4826aap function_call + 106
58 0x10f43eb35p PyObject_Call + 69
59 0x10f57dc9bp PyEval_EvalFrameEx + 22123
60 0x10f57cfb8p PyEval_EvalFrameEx + 18824
61 0x10f57cfb8p PyEval_EvalFrameEx + 18824
62 0x10f57cfb8p PyEval_EvalFrameEx + 18824
63 0x10f57cfb8p PyEval_EvalFrameEx + 18824
64 0x10f57cfb8p PyEval_EvalFrameEx + 18824
65 0x10f576fafp _PyEval_EvalCodeWithName + 335
66 0x10f57d2a7p PyEval_EvalFrameEx + 19575
67 0x10f576fafp _PyEval_EvalCodeWithName + 335
68 0x10f5713b5p builtin_exec + 341
69 0x10f4b555ep PyCFunction_Call + 62
70 0x10f57cec7p PyEval_EvalFrameEx + 18583
71 0x10f576fafp _PyEval_EvalCodeWithName + 335
72 0x10f57d2a7p PyEval_EvalFrameEx + 19575
73 0x10f576fafp _PyEval_EvalCodeWithName + 335
74 0x10f4826aap function_call + 106
75 0x10f43eb35p PyObject_Call + 69
76 0x10f5ee906p RunModule + 182
77 0x10f5edb03p Py_Main + 2979
78 0x10f42f861p main + 497
79 0x7fff5dffe015p start + 1
80 0x5p
- 问题复现:
def encoder(is_sparse):
src_word_id = pd.data(
name="src_word_id", shape=[1], dtype='int32', lod_level=1)
src_embedding = pd.embedding(
input=src_word_id,
size=[dict_size, word_dim],
dtype='float32',
is_sparse=is_sparse,
param_attr=fluid.ParamAttr(name='vemb'))
fc1 = pd.fc(input=src_embedding, size=hidden_dim * 4, act='tanh')
lstm_hidden0, lstm_0 = pd.dynamic_lstm(input=fc1, size=hidden_dim * 4)
encoder_out = pd.sequence_last_step(input=lstm_hidden0)
return encoder_out
-
问题分析:
该问题很有可能是paddle.fluid.layers.data
定义的输入类型不正确,Fluid中需要注意的是对于float而言,float32是主要实数类型,而对int而言,int64是主要标签类型。在使用时,最好对应上。 -
问题解决:
修改成正确的数据类型。
def encoder(is_sparse):
src_word_id = pd.data(
name="src_word_id", shape=[1], dtype='int64', lod_level=1)
src_embedding = pd.embedding(
input=src_word_id,
size=[dict_size, word_dim],
dtype='float32',
is_sparse=is_sparse,
param_attr=fluid.ParamAttr(name='vemb'))
fc1 = pd.fc(input=src_embedding, size=hidden_dim * 4, act='tanh')
lstm_hidden0, lstm_0 = pd.dynamic_lstm(input=fc1, size=hidden_dim * 4)
encoder_out = pd.sequence_last_step(input=lstm_hidden0)
return encoder_out