构建skipgram模型时出错
收藏
利用paddlepaddle构建skipgram模型,其中调用了fluid.layers.nce接口,在使用CPU的情况下正常,在使用GPU的情况下报错
源代码
embed_word = fluid.layers.data(name = 'embed_word', shape = [1], dtype = 'int64')
label_word = fluid.layers.data(name = 'label_word', shape = [1], dtype = 'int64')
embed = fluid.layers.embedding(input = embed_word, size = [self.vocabulary_size, self.embedding_size], param_attr = 'embed_w', is_sparse = is_sparse)
loss = fluid.layers.nce(input = embed, label = label_word, num_total_classes = self.vocabulary_size, param_attr = 'nce_w', bias_attr = 'nce_b', num_neg_samples = 10)
avg_loss = fluid.layers.mean(loss)
错误
paddle.fluid.core.EnforceNotMet: op nce does not have kernel for data_type[float]:data_layout[ANY_LAYOUT]:place[CUDAPlace(0)]:library_type[PLAIN] at [/paddle/paddle/fluid/framework/operator.cc:678]
PaddlePaddle Call Stacks:
0 0x7f36f331ba16p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486
1 0x7f36f4216c5fp paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, boost::variant const&) const + 1231
2 0x7f36f4213a2cp paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, boost::variant const&) + 252
3 0x7f36f4057ac7p
4 0x7f36f4075c50p
5 0x7f36f40754b5p paddle::framework::details::OpHandleBase::RunAndRecordEvent(std::function const&) + 805
6 0x7f36f405759fp paddle::framework::details::ComputationOpHandle::RunImpl() + 95
7 0x7f36f4076555p paddle::framework::details::OpHandleBase::Run(bool) + 117
8 0x7f36f4035e5ap
9 0x7f36f3eb19e3p std::_Function_handler (), std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, void> >::_M_invoke(std::_Any_data const&) + 35
10 0x7f36f3471a77p std::__future_base::_State_base::_M_do_set(std::function ()>&, bool&) + 39
11 0x7f3770848a99p
12 0x7f36f4034c62p
13 0x7f36f34735b4p ThreadPool::ThreadPool(unsigned long)::{lambda()#1}::operator()() const + 404
14 0x7f370101cc5cp
15 0x7f37708416bap
16 0x7f376fe6741dp clone + 109
0
收藏
请登录后评论
数据类型错误,你查看下nce这个代码封装的数据输入应该是什么类型的,在gpu状态下可能需要将其中的一个输入类型做转换