PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.2k stars 5.57k forks source link

capi demo中没有多个data layer的demo #11911

Closed vincewangnsn closed 6 years ago

vincewangnsn commented 6 years ago
在进行paddle capi预测改造时,由于模型比较复杂,有多个data layer,如下图所示

image 请问如何构建Argument,是否依次构建Argument就ok了?是否需要将名字与各个Argument对应?如果可以的话,是否方便给出个多个data layer的demo进行参考,谢谢~

guoshengCS commented 6 years ago

可以尝试下参照 https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/legacy/capi/examples/model_inference/dense/main.c 进行以下几处修改

  1. paddle_arguments_resize(in_args, 1)改为paddle_arguments_resize(in_args, 10)
  2. 使用paddle_matrix_create为输入 i 创建 paddle_matrix_i
  3. paddle_arguments_set_value(in_args, i, paddle_matrix_i)
vincewangnsn commented 6 years ago

@guoshengCS

int seq_pos_array[] = {0, 5, 8, 10, 14};
paddle_ivector seq_pos = paddle_ivector_create(
    seq_pos_array, sizeof(seq_pos_array) / sizeof(int), false, false);
// Suppose the network only has one input data layer.
CHECK(paddle_arguments_set_sequence_start_pos(in_args, 0, 0, seq_pos));

请问paddle_arguments_set_sequence_start_pos 函数中第三个参数是什么? image

guoshengCS commented 6 years ago

这个是双层序列会用到的,表示这是第几层的序列信息

vincewangnsn commented 6 years ago

@guoshengCS image 这是tutorial上面给的例子,也就是我上面copy的代码

guoshengCS commented 6 years ago

单层序列用0就可以

guoshengCS commented 6 years ago

单层序列第三个参数用0就可以。 数据类型是integer_value_sequence,附加的序列信息是根据每个sequence长度创建的seq_pos,参照你上面贴图里的说明就可以