- tensorflow 사용방법 2가지 - depencency별 분류
- docker build하여 사용할 시에 java - alpine 사용 불가
- tensorflow core platform dependency사용 방법
public float useModel(float[] fArr) {
SavedModelBundle model = SavedModelBundle
.load("model 경로", "serve");
Session session = model.session();
TFloat32 input = TFloat32.tensorOf(Shape.of(1, 2381), data -> data.set(NdArrays.vectorOf(fArr), 0));
Tensor output = session.runner().feed("serving_default_input_1", input).fetch("StatefulPartitionedCall").run()
.get(0);
FloatDataBuffer fd = output.asRawTensor().data().asFloats();
float result = fd.getFloat(0);
System.out.println("반환 flaot : "+result); //0.93560594
System.out.println(output.asRawTensor()); //DT_FLOAT tensor with shape [1, 1]
System.out.println(output.dataType()); //DT_FLOAT
System.out.println(output); //DenseTFloat32(shape=[1, 1])
return result;
}
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.4.2</version>
</dependency>
2. tensorflow dependency사용방법
//model 사용하기
public void useModel(float[][] fArr) {
SavedModelBundle model = SavedModelBundle.load(:"model 경로", "serve");
Session session = model.session();
Tensor input = Tensor.create(fArr);
Tensor output = session.runner().feed("serving_default_input_1", input).fetch("StatefulPartitionedCall").run().get(0);
Object result = output.copyTo(new float[1][1]);
System.out.println(output);
System.out.println(result);
}
//모든함수 가져오기(호출명 등 확인)
public void getOperation() {
try(SavedModelBundle model = SavedModelBundle.load("model 경로", "serve")){
Graph graph = model.graph();
Iterator<Operation> it = graph.operations();
while(it.hasNext()) {
Operation op = it.next();
System.out.println(op.name());
}
}catch(Exception e) {
System.out.println(e);
}
}
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.15.0</version>
</dependency>