当我试着运行以下程序时。我收到一个空的结果。数据和指针都为空。在代码下面,您还可以找到模型的输入和输出签名。一切似乎都很好。有什么想法吗?
图书馆:org.tensorflow:tensorflow-core-platform:0.2.0
private static void tensorflowTest() {
final var smb = SavedModelBundle.load("./python/project1/models/RNN_Final-10-1606839953.model", "serve");
final var session = smb.session();
final var sequence = NdArrays.ofFloats(Shape.of(120, 2));
for (int i = 0; i < 120; i++) {
sequence.set(NdArrays.vectorOf(0.2f, 0.5f), i);
}
final var sequences = NdArrays.ofFloats(Shape.of(1, 120, 2));
sequences.set(sequence, 0);
predict(session, TFloat32.tensorOf(sequences));
}
private static void predict(final Session sess, final Tensor<TFloat32> inputTensor) {
final List<Tensor<?>> results = sess.runner()
.feed("serving_default_lstm_input:0", inputTensor)
.fetch("StatefulPartitionedCall:0")
.run();
results.forEach(tensor -> {
// Error here
// IllegalRankException: Not a scalar value
// Tensor data and pointer are null.
final var tensorResult = tensor.expect(TFloat32.DTYPE);
final var fl = tensorResult.data().getFloat(0);
log.info("Float value: {}", fl);
});
}
下面您可以看到我的模型输入和输出定义:
The given SavedModel SignatureDef contains the following input(s):
inputs['lstm_input'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 120, 2)
name: serving_default_lstm_input:0
The given SavedModel SignatureDef contains the following output(s):
outputs['dense_1'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 2)
name: StatefulPartitionedCall:0
Method name is: tensorflow/serving/predict
暂无答案!
目前还没有任何答案,快来回答吧!