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 多slot 多样本预估 参数设置 #10321

Closed lyp2github closed 6 years ago

lyp2github commented 6 years ago

模型输入结构

integer_value_sequence(DICT_SIZE),
dense_vector(1024),

输入数据demo

  [[[1530,222],[0.196966, -1.395368, -0.135187, -0.648595, 0.381318,...]],
 [[1530,222],[-5.0974379999999995, -22.252984000000005, -7.180929999999999, 16.662134000000002, -0.26429299999999967, -8.972871,...]]]

capi参数设置

paddle_arguments_resize(_in_args, 2);
ids_arr =[1530,222,1530,222]
seq_arr = {0,2,4}
term_id_vec = paddle_ivector_create(ids_arr, 4, false, false);
term_seq_pos = paddle_ivector_create(seq_arr, sizeof(seq_arr)/sizeof(int), false, false);
paddle_arguments_set_ids(_in_args, 0, term_id_vec);
paddle_arguments_set_sequence_start_pos(_in_args, 0, 0, term_seq_pos);#设置integer_value_seq
fea_mat = paddle_matrix_create(2 , 1024, false);#两个样本
paddle_arguments_set_value(_in_args, 1 , _fea_mat);

预测时报错

I0502 10:19:53.017947 38679 Util.cpp:166] commandline:  --use_gpu=False
F0502 10:29:57.013046 38786 LstmLayer.cpp:161] Check failed: starts[numSequences] == batchSize (1 vs. 2)
*** Check failure stack trace: ***
    @     0x7f355eb7407d  google::LogMessage::Fail()
    @     0x7f355eb77b2c  google::LogMessage::SendToLog()
    @     0x7f355eb73ba3  google::LogMessage::Flush()
    @     0x7f355eb7903e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f355ec541e2  paddle::LstmLayer::forward()
    @     0x7f355ecebc2d  paddle::NeuralNetwork::forward()
reyoung commented 6 years ago

Review her code into details, I found that the user apply sizeof on a malloced array, and do not send the right size to C-API.