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.
|
processInput
processOutput
Batchifier getBatchifier()
Batchifier
.Batchifier
default 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