Closed xibinch closed 6 years ago
不是很确定,是参考 这里 https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/capi/examples/model_inference 的步骤进行的么?
是的,按照这个上面做的转换成二进制,然后用capi加载进行预测,就报上面的提到的错误
.py配置有问题吗, 这个错误看着像是所没有dataLayer?, 但是我的配置里定义了 data = paddle.layer.data("word", paddle.data_type.integer_value_sequence(dict_dim))
使用这个脚本dump会问题,无法转换, 0.10 和0.11有什么差别,为什么python版本可以,CAPI就问题比较多?
File "./dump.py", line 17, in
你是怎么生成config.bin的?
14 from paddle.utils.dump_v2_config import dump_v2_config 15 from network_conf import convolution_net 16 17 predict = convolution_net(dict_dim=11679, class_dim=46, is_infer=True) 18 dump_v2_config(predict, "network_config.bin", True)
利用上面的脚本生成的,现在可以通过 paddlepaddle 0.11.0版本的可以生成了,但是有运行时候有新的错误
F0321 16:04:08.828732 2734 ContextProjection.cpp:108] Check failed: in_->sequenceStartPositions Check failure stack trace: @ 0x7feffd29f07d google::LogMessage::Fail() @ 0x7feffd2a2b2c google::LogMessage::SendToLog() @ 0x7feffd29eba3 google::LogMessage::Flush() @ 0x7feffd2a403e google::LogMessageFatal::~LogMessageFatal() @ 0x7feffd3f2233 paddle::ContextProjection::forward() @ 0x7feffd349989 paddle::MixedLayer::forward()
前向计算的时候怎么判断数据输入是否正确?
应该至少过滤掉空sequence,并检查数据size是否符合模型配置。
sequence数据需要设置pos, 安装样例修改代码后还有其他错误
修改C代码如下,使用一个测试输入 256 int tmp_ids[] = {18, 79, 39, 46, 261, 1460, 2873}; 257 258 paddle_ivector sentence = paddle_ivector_create( 259 tmp_ids, id_len, false, false); 260 261 paddle_arguments in_args = paddle_arguments_create_none(); 262 //There is only one input of this network. 263 CHECK_PADDLE_RET(paddle_arguments_resize(in_args, 1)); 264 CHECK_PADDLE_RET(paddle_arguments_set_ids(in_args, 0, sentence)); 265 266 int seq_pos_array[] = {0, sizeof(tmp_ids)/ sizeof(int)}; 267 paddle_ivector seq_pos = paddle_ivector_create(seq_pos_array, sizeof(tmp_ids)/sizeof(int), false, false); 268 CHECK_PADDLE_RET(paddle_arguments_set_sequence_start_pos(in_args, 0, 0, seq_pos)); 269 270 paddle_arguments out_args = paddle_arguments_create_none(); 271 272 // predict by network 273 CHECK_PADDLE_RET(paddle_gradient_machine_forward(_machine, 274 in_args, out_args, false));
F0321 19:35:19.725028 3886 Matrix.h:262] Check failed: startRow + numRows <= getHeight() (8 vs. 7) Check failure stack trace: @ 0x7fbaec48c07d google::LogMessage::Fail() @ 0x7fbaec48fb2c google::LogMessage::SendToLog() @ 0x7fbaec48bba3 google::LogMessage::Flush() @ 0x7fbaec49103e google::LogMessageFatal::~LogMessageFatal() @ 0x7fbaec6861ff paddle::Matrix::subMatrix() @ 0x7fbaec664a39 paddle::ContextProjectionForward<>()
int seq_pos_array[] = {0, sizeof(tmp_ids)/ sizeof(int)};
问题出在这个地方, 这个数组第一个值设置成 词ID的起始编号, 数组第二个值设置成 当前句子词个数,可以跑通过
感谢记录过程!先关闭这个issue了~
python版本的可以跑通,但是用生成config.bin用CAPI来加载时候回发现没有dataLayer,请问这是配置哪的问题?
network_config.py