README_cn.md 1.2 KB
Newer Older
F
flame 已提交
1 2 3
# Paddle 预测golang API

## 安装
4
首先cmake编译时打开`-DON_INFER=ON`,在编译目录下得到``paddle_inference_c_install_dir``,将该目录移动到当前目录中并重命名为`paddle_c`
F
flame 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

## 在Go中使用Paddle预测
首先创建预测配置
``` go
config := paddle.NewAnalysisConfig()
config.SetModel(model_file, params_file)
config.SwitchUseFeedFetchOps(false)
config.SwitchSpecifyInputNames(true)
```

创建predictor
``` go
predictor := paddle.NewPredictor(config)
```

获取输入Tensor和输出Tensor
``` go
inputs = predictor.GetInputTensors()
```

设置输入数据(假设只有一个输入)
``` go
input := inputs[0]
input.SetValue(data)
input.Reshape([]int32{1, 3, 300, 300})
```

运行预测
``` go
predictor.ZeroCopyRun()
```

获取输入Tensor的真实值
``` go
output := outputs[0]
predictor.GetZeroCopyOutput(output)
value := reflect.ValueOf(output.Value())
shape, dtype := paddle.ShapeAndTypeOf(value)
output_data := value.Interface().([][]float32)
```

## 示例
源码见[mobilenet](./demo/mobilenet.go)

下载[数据](https://paddle-inference-dist.cdn.bcebos.com/mobilenet-test-model-data.tar.gz)并解压到当前目录

运行
Q
Qi Li 已提交
52 53
```bash
export LD_LIBRARY_PATH=`pwd`/paddle_c/paddle/lib:$LD_LIBRARY_PATH
F
flame 已提交
54 55
go run ./demo/mobilenet.go
```