|
@@ -15,49 +15,60 @@ public class Predictor {
|
|
|
outputNum = getOutputNum(cppPaddlePredictorPointer);
|
|
|
}
|
|
|
|
|
|
+ public Predictor(Predictor predictor) {
|
|
|
+ cppPaddlePredictorPointer = clonePredictor(predictor.cppPaddlePredictorPointer);
|
|
|
+ inputNum = getInputNum(cppPaddlePredictorPointer);
|
|
|
+ outputNum = getOutputNum(cppPaddlePredictorPointer);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected void finalize() throws Throwable {
|
|
|
destroyNativePredictor();
|
|
|
}
|
|
|
|
|
|
- public static Predictor createPaddlePredictor(Config config){
|
|
|
+ public static Predictor createPaddlePredictor(Config config) {
|
|
|
Predictor predictor = new Predictor(config);
|
|
|
return predictor.cppPaddlePredictorPointer == 0L ? null : predictor;
|
|
|
}
|
|
|
|
|
|
+ public static Predictor clonePaddlePredictor(Predictor predictor) {
|
|
|
+ Predictor predictorClone = new Predictor(predictor);
|
|
|
+ return predictorClone.cppPaddlePredictorPointer == 0L ? null : predictorClone;
|
|
|
+ }
|
|
|
+
|
|
|
public void destroyNativePredictor() {
|
|
|
- if(cppPaddlePredictorPointer != 0) cppPredictorDestroy(cppPaddlePredictorPointer);
|
|
|
+ if (cppPaddlePredictorPointer != 0) cppPredictorDestroy(cppPaddlePredictorPointer);
|
|
|
cppPaddlePredictorPointer = 0;
|
|
|
}
|
|
|
|
|
|
- public String getInputNameById(long id){
|
|
|
+ public String getInputNameById(long id) {
|
|
|
return getInputNameByIndex(this.cppPaddlePredictorPointer, id);
|
|
|
}
|
|
|
|
|
|
- public String getOutputNameById(long id){
|
|
|
+ public String getOutputNameById(long id) {
|
|
|
return getOutputNameByIndex(this.cppPaddlePredictorPointer, id);
|
|
|
}
|
|
|
|
|
|
- public Tensor getInputHandle(String name){
|
|
|
+ public Tensor getInputHandle(String name) {
|
|
|
long cppTensorPointer = getInputHandleByName(this.cppPaddlePredictorPointer, name);
|
|
|
return cppTensorPointer == 0 ? null : new Tensor(cppTensorPointer);
|
|
|
}
|
|
|
|
|
|
- public Tensor getOutputHandle(String name){
|
|
|
+ public Tensor getOutputHandle(String name) {
|
|
|
long cppTensorPointer = getOutputHandleByName(this.cppPaddlePredictorPointer, name);
|
|
|
return cppTensorPointer == 0 ? null : new Tensor(cppTensorPointer);
|
|
|
}
|
|
|
|
|
|
- public void clearIntermediateTensor(){
|
|
|
+ public void clearIntermediateTensor() {
|
|
|
predictorClearIntermediateTensor(this.cppPaddlePredictorPointer);
|
|
|
}
|
|
|
|
|
|
- public void tryShrinkMemory(){
|
|
|
+ public void tryShrinkMemory() {
|
|
|
predictorTryShrinkMemory(this.cppPaddlePredictorPointer);
|
|
|
}
|
|
|
|
|
|
|
|
|
- public boolean run(){
|
|
|
+ public boolean run() {
|
|
|
return runPD(this.cppPaddlePredictorPointer);
|
|
|
}
|
|
|
|
|
@@ -81,6 +92,8 @@ public class Predictor {
|
|
|
|
|
|
private native long createPredictor(long cppPaddleConfigPointer);
|
|
|
|
|
|
+ private native long clonePredictor(long cppPaddlePredictorPointer);
|
|
|
+
|
|
|
private native long getInputNum(long cppPaddlePredictorPointer);
|
|
|
|
|
|
private native long getOutputNum(long cppPaddlePredictorPointer);
|