我正在尝试使用DJL Tensorflow
将Python Tensorflow自定义模型导入到spring-boot
,并且该模型得到Pandas DataFrame
作为输入和输出。
我想知道是否有任何特定的表或dataFrame类适用于Criteria<I、 O>以及ZooModel<I、 O>因为在示例代码中只有来自CCD_ 4的Image类。
如果有,该类是否与Pandas DataFrame
兼容?下面是我写的一些代码和错误消息。
我已经尝试过tablesaw.api.Table
和apache.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();
}
}