I - the input typeO - the output typepublic interface Translator<I,O> extends PreProcessor<I>, PostProcessor<O>
Translator interface provides model pre-processing and postprocessing functionality.
Users can use this in Predictor with input and output objects specified. The following
is an example of processing an image and creating classification output:
private static final class MyTranslator implements Translator<Image, Classification> {
private int imageWidth;
private int imageHeight;
public MyTranslator(int imageWidth, int imageHeight) {
this.imageWidth = imageWidth;
this.imageHeight = imageHeight;
}
@Override
public NDList processInput(TranslatorContext ctx, Image input) {
NDArray imageND = input.toNDArray(ctx.getNDManager());
return new NDList(NDImageUtils.resize(imageND, imageWidth, imageHeight);
}
@Override
public Classification processOutput(TranslatorContext ctx, NDList list) throws TranslateException {
Model model = ctx.getModel();
NDArray array = list.get(0).at(0);
NDArray sorted = array.argSort(-1, false);
NDArray top = sorted.at(0);
float[] probabilities = array.toFloatArray();
int topIndex = top.toIntArray()[0];
String[] synset;
try {
synset = model.getArtifact("synset.txt", MyTranslator::loadSynset);
} catch (IOException e) {
throw new TranslateException(e);
}
return new Classification(synset[topIndex], probabilities[topIndex]);
}
private static String[] loadSynset(InputStream is) {
...
}
}
| Modifier and Type | Method and Description |
|---|---|
Batchifier |
getBatchifier()
Gets the
Batchifier. |
default void |
prepare(TranslatorContext ctx)
Prepares the translator with the manager and model to use.
|
processInputprocessOutputBatchifier getBatchifier()
Batchifier.Batchifierdefault void prepare(TranslatorContext ctx) throws java.lang.Exception
ctx - the context for the Predictor.java.lang.Exception - if there is an error for preparing the translator