使用DJL(Deep Java Library)时,哪个Java类与python Pandas DataFrame兼容



我正在尝试使用DJL Tensorflow将Python Tensorflow自定义模型导入到spring-boot,并且该模型得到Pandas DataFrame作为输入和输出。

我想知道是否有任何特定的表或dataFrame类适用于Criteria<I、 O>以及ZooModel<I、 O>因为在示例代码中只有来自CCD_ 4的Image类。

如果有,该类是否与Pandas DataFrame兼容?下面是我写的一些代码和错误消息。

我已经尝试过tablesaw.api.Tableapache.spark.sql.Dataset,但都不起作用。如果你知道关于它的任何信息,请告诉我。

条件

  • 输入类I和输出类O应等效于Pandas DataFrame
  • 此类应适用于Criteria<I, O>ZooModel<I, O>

代码

Criteria<I, O> criteria = Criteria.builder()
.setTypes(I.class, O.class) // defines input and output data type
.optModelUrls("../model/mlpDemo/") // search models in specified path
.build();

try (ZooModel<I, O> model = criteria.loadModel(); 
Predictor<I, O> predictor = model.newPredictor();) {
O result = predictor.predict(dataFrame); // here should be loaded dataFrame
System.out.print(result);
} catch (Exception e) {
e.printStackTrace();
}

错误消息

ai.djl.repository.zoo.ModelNotFoundException: No matching model with specified Input/Output type found.
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:186)
at com.example.demo.DemoApplication.main(DemoApplication.java:69)
Caused by: ai.djl.repository.zoo.ModelNotFoundException: No matching default translator found. The valid input and output classes are: 
(ai.djl.ndarray.NDList, ai.djl.ndarray.NDList)
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:97)
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:174)
... 1 more

您需要创建自己的Translator来将DataFrame转换为NDList:

class MyTranslator implements NoBatchifyTranslator<DataFrame, Classifcations> {
@Override
public NDList processInput(TranslatorContext ctx, DataFrame input) {
// convert DataFrame columns into NDArrays
NDArray col1 = ...
NDArray col2 = ...
return new NDList(col1, col2);
}
/** {@inheritDoc} */
@Override
public Classifications processOutput(TranslatorContext ctx, NDList list) {
// implement your post processing
return new Classifications();
}
}

最新更新