“abc167338a99f1b644e1a5d4bb324a566d2fd87f”上不存在“develop/doc/design/cpp_data_feeding.html”
Check Failed: val_seqs.shape()[0] == out_seq.shape()[0] (9 vs. 12)
Created by: fingthinking
在进行分词大量调用的时候,出现了如下的错误,请问应该是什么原因呢?请帮忙解答一下:
F0717 16:29:34.666633 31026 ContextProjectionOp.cpp:124] Check failed: val_seqs.shape()[0] == out_seq.shape()[0] (9 vs. 12)
*** Check failure stack trace: ***
@ 0x7f5d0b99587d google::LogMessage::Fail()
@ 0x7f5d0b99932c google::LogMessage::SendToLog()
@ 0x7f5d0b9953a3 google::LogMessage::Flush()
@ 0x7f5d0b99a83e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f5d0b81e788 paddle::ContextProjectionForwardFunc<>::calc()
@ 0x7f5d0b6dac0e paddle::ContextProjection::forward()
@ 0x7f5d0b77041e paddle::MixedLayer::forward()
@ 0x7f5d0b80c530 paddle::NeuralNetwork::forward()
@ 0x7f5d0b6c34e6 paddle_gradient_machine_forward
@ 0x464469 cpu::ci::QualityPredict::get_score()
@ 0x46571f cpu::ci::QualityServiceImpl::queryQuality()
@ 0x45f0d5 cpu::ci::QualityService::CallMethod()
@ 0x4fd980 baidu::rpc::policy::ProcessRpcRequest()
@ 0x53b72a baidu::rpc::ProcessInputMessage()
@ 0x53c58b baidu::rpc::InputMessenger::OnNewMessages()
@ 0x4a79bd baidu::rpc::Socket::ProcessEvent()
@ 0x61c1f9 bthread::TaskGroup::task_runner()
@ 0x611171 bthread_make_fcontext
为什么会出现输入与输出的形状不一致的情况。
代码如下:
std::pair<float, float> QualityPredict::get_score(std::string query) {
std::vector<std::string> line_vec;
// 分割字符串
size_t count = cpu::ci::str_split(query, " ", line_vec);
int sep[count];
for (size_t i = 0; i < count; i++) {
if (this->_word_dict.count(line_vec[i]) > 0) {
sep[i] = this->_word_dict.find(line_vec[i])->second;
} else {
sep[i] = 0;
}
}
cpu::ci::print_arr(sep, count);
paddle_arguments in_args = paddle_arguments_create_none();
// There is only one input of this network.
CHECK(paddle_arguments_resize(in_args, 1));
paddle_ivector sentence = paddle_ivector_create(
sep, sizeof(sep) / sizeof(int), false, false);
CHECK(paddle_arguments_set_ids(in_args, 0, sentence));
int seq_pos_array[] = {0, (int)(sizeof(sep) / sizeof(int))};
paddle_ivector seq_pos = paddle_ivector_create(
seq_pos_array, sizeof(seq_pos_array) / sizeof(int), false, false);
CHECK(paddle_arguments_set_sequence_start_pos(in_args, 0, 0, seq_pos));
paddle_arguments out_args = paddle_arguments_create_none();
CHECK(paddle_gradient_machine_forward(this->_machine,
in_args,
out_args,
/* isTrain */ false));
paddle_matrix prob = paddle_matrix_create_none();
CHECK(paddle_arguments_get_value(out_args, 0, prob));
paddle_real* array = nullptr;
CHECK(paddle_matrix_get_row(prob, 0, &array));
CHECK(paddle_matrix_destroy(prob));
CHECK(paddle_arguments_destroy(out_args));
CHECK(paddle_ivector_destroy(seq_pos));
CHECK(paddle_ivector_destroy(sentence));
CHECK(paddle_arguments_destroy(in_args));
return std::pair<float, float>(array[0], array[1]);
};