PaddlePaddle / models

Officially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.
Apache License 2.0
6.9k stars 2.91k forks source link

使用capi实现conv_seq2seq模型的预测程序 #983

Closed fmantianxing closed 6 years ago

fmantianxing commented 6 years ago

capi实现代码如下:

    paddle_arguments in_args = paddle_arguments_create_none();
    paddle_error ret1 = paddle_arguments_resize(in_args, 4);
    if (ret1 != kPD_NO_ERROR) {
        return false;
    }
    paddle_gradient_machine local_machine = nullptr;
    paddle_error local_mret = paddle_gradient_machine_create_shared_param(
            _machine, _config_buf, _config_size, &local_machine);
    if (local_mret != kPD_NO_ERROR) {
        return false;
    }
    std::vector<int> query_ids;
    std::vector<int> query_pos;
    gen_input(query, &query_ids, &query_pos);

    int* src_ids = (int*) query_ids.data();
    unsigned int src_num = query_ids.size();
    int* src_pos = (int*) query_pos.data();

    std::vector<int> trg_query_ids;
    std::vector<int> trg_query_pos;

    int trg_ids[WIN_SIZE]; //WORD_PADDING};
    int trg_pos[WIN_SIZE]; // = {POS_PADDING};

    for (int i = 0; i < WIN_SIZE; ++i) {
        trg_ids[i] = WORD_PADDING;
        trg_pos[i] = POS_PADDING;
    }
    trg_ids[WIN_SIZE-1] = 0;
    trg_pos[WIN_SIZE-1] = 0;

    int src_pos_array[] = {0, (int) src_num};
    paddle_ivector src_ids_vec = paddle_ivector_create(src_ids, src_num, false, false);
    CHECK(paddle_arguments_set_ids(in_args, 0, src_ids_vec));
    paddle_ivector src_seq_vec = paddle_ivector_create(src_pos_array, sizeof(src_pos_array) / sizeof(int), false, false);
    CHECK(paddle_arguments_set_sequence_start_pos(in_args, 0, 0, src_seq_vec));

    paddle_ivector src_pos_vec = paddle_ivector_create(src_pos, src_num, false, false);
    CHECK(paddle_arguments_set_ids(in_args, 1, src_pos_vec));
    paddle_ivector src_seq_pos_vec = paddle_ivector_create(src_pos_array, sizeof(src_pos_array) / sizeof(int), false, false);
    CHECK(paddle_arguments_set_sequence_start_pos(in_args, 1, 0, src_seq_pos_vec));

    int trg_pos_array[] = {0, (int) WIN_SIZE};
    paddle_ivector trg_ids_vec = paddle_ivector_create(trg_ids, WIN_SIZE, false, false);
    CHECK(paddle_arguments_set_ids(in_args, 2, trg_ids_vec));
    paddle_ivector trg_seq_vec = paddle_ivector_create(trg_pos_array, sizeof(trg_pos_array) / sizeof(int), false, false);
    CHECK(paddle_arguments_set_sequence_start_pos(in_args, 2, 0, trg_seq_vec));

    paddle_ivector trg_pos_vec = paddle_ivector_create(trg_pos, WIN_SIZE, false, false);
    CHECK(paddle_arguments_set_ids(in_args, 3, trg_pos_vec));
    paddle_ivector trg_seq_pos_vec = paddle_ivector_create(trg_pos_array, sizeof(trg_pos_array) / sizeof(int), false, false);
    CHECK(paddle_arguments_set_sequence_start_pos(in_args, 3, 0, trg_seq_pos_vec));

    paddle_arguments out_args = paddle_arguments_create_none();
    paddle_error ret4 = paddle_gradient_machine_forward(local_machine, in_args, out_args, false);
    if (ret4 != kPD_NO_ERROR) {
        return false;
    }

线下模型地址:https://github.com/PaddlePaddle/models/tree/develop/conv_seq2seq 出现了如下错误: F0612 17:35:47.277493 34148 RecurrentGradientMachine.cpp:758] Check failed: idSize == size (1 vs. 12) Check failure stack trace: @ 0x7fcb239cb63e google::LogMessage::Fail() @ 0x7fcb239cb591 google::LogMessage::SendToLog() @ 0x7fcb239caf9f google::LogMessage::Flush() @ 0x7fcb239ce088 google::LogMessageFatal::~LogMessageFatal() @ 0x7fcb23829604 paddle::RecurrentGradientMachine::copyScattedId() @ 0x7fcb23829e9d paddle::RecurrentGradientMachine::createMemoryFrameInfo() @ 0x7fcb2382a807 paddle::RecurrentGradientMachine::forward() @ 0x7fcb23729391 paddle::RecurrentLayerGroup::forward() @ 0x7fcb23844d7c paddle::NeuralNetwork::forward() @ 0x7fcb236c0796 paddle_gradient_machine_forward

nuoline commented 6 years ago

没人跟吗

lucywsq commented 6 years ago

您好,此问题已经反馈至相关同学,正在排查跟进中,有进展会第一时间回复~

shanyi15 commented 6 years ago

您好,此issue在近一个月内暂无更新,我们将于今天内关闭。若在关闭后您仍需跟进提问,可重新开启此问题,我们将在24小时内回复您。因关闭带来的不便我们深表歉意,请您谅解~感谢您对PaddlePaddle的支持! Hello, this issue has not been updated in the past month. We will close it today for the sake of other user‘s experience. If you still need to follow up on this question after closing, please feel free to reopen it. In that case, we will get back to you within 24 hours. We apologize for the inconvenience caused by the closure and thank you so much for your support of PaddlePaddle Group!