预测结果不稳定,预测结果也不对
Created by: xiongbinbtbu
训练代码: label = fluid.layers.data(name='label', shape=[1], dtype='int64', lod_level=0) index = fluid.layers.data(name='index', shape=[1], dtype='int64', lod_level=1) feature = fluid.layers.data(name='feature', shape=[1], dtype='float32', lod_level=1)
预测代码: std::unique_ptr input_index = predictor->GetInputTensor("index"); input_index->Reshape({1, 1}); // 设置LOD std::vector<std::vector<size_t>> lod_data = {{0}, {0}}; input_index->SetLoD({{0,index_len}}); input_index->copy_from_cpu(index_data); std::unique_ptr input_feature = predictor->GetInputTensor("feature"); input_feature->Reshape({1, 1}); input_feature->copy_from_cpu(feature_data); input_feature->SetLoD({{0,feature_len}});
CHECK(predictor->ZeroCopyRun());
std::vector out_data; std::vectorstd::string output_names = predictor->GetOutputNames(); std::unique_ptr output_t = predictor->GetOutputTensor(output_names[0]); std::vector output_shape = output_t->shape(); int out_num = std::accumulate(output_shape.begin(), output_shape.end(), 1, std::multiplies());
out_data.resize(out_num); output_t->copy_to_cpu(out_data.data()); std::cout<<"output data:"<<std::endl; for(unsigned int num = 0; num < out_data.size(); num++) { std::cout<<out_data[num]<<std::endl; } std::cout<<out_data.data()<<std::endl;
执行预测代码: 有时显示0 1 有时显示1 0 有时显示0.626493 0.373507 麻烦看看这是啥问题?