2.1 Without command line parameters.
Call java bytecode interpreter from within the directory, containing NNDefRun.jar (don't forget -jar option):
2.2 User -log option for testing and debugging:java -jar NNDefRun.jar
java -jar NNDefRun.jar -log
In both cases
you'll be prompted for NNDef XML file name (see 1.1) following by Input values.
2.3 Specifying NNDEF XML file name from within command
line.
File name should always be the first command line parameter (or second if '-log
' exists):
java -jar NNDefRun.jar nndef_sample.xml
or
java -jar NNDefRun.jar -log nndef_sample.xml
2.4 Additionally, you can pass input values from the command line:
java -jar NNDefRun.jar -log nndef_sample.xml 0.1 male
In this example '0.1' and 'male' are the inputs to selected model. The first value is a simple numeric input. Simple numeric input is described in NNDEF XML like that:
<Input OrderId="2" Name="Height"/>
While an option input looks like:
<Input OrderId="3" Name="Gender">
<Option ActualValue="male" TransValue="0"/>
<Option ActualValue="female" TransValue="1"/>
</Input>
For this input
the only valid values are 'male' or 'female'.
If you enter invalid values, you'll be prompted for correction.
2.5 Additonally, you can specify some parameters from command
line and some during execution. All values will be striclty validated.
2.6 As
an alternative for entering inputs you can pass the name of input file as a
command line parameter. This text file confirms following simple rules:
- comment lines are starting with "#"
- all the inputs are stored on the first non-comment line and separated by spaces
To invoke the runner with input file, use the argument: "-input <in_file_name>"
Example:
java -jar NNDefRun.jar -log nndef_sample.xm -input input_file.txt
Following step
by step instruction will guide you through the process :
3.1 Place NNDefRun.jar within your classpath or
current directory.
3.2 Import NNDefRun package as well as java.io.IOException
:
import java.io.IOException;
import com.makhfi.NN.NNDefRun;
3.3 Create NNDefRun object. And specify NN model described in NNDEF XML file:
NNDefRun r = new NNDefRun();
r.setXMLFile("nndef_sample.xml");
Alternatively, you can combine these 2 lines by invoking another constructor of that object:
NNDefRun r = new NNDefRun(XMLFName);
3.4 Set your input values:
String[] inputs={"0.25", "0.7", "male"};
r.setDirectInputs(inputs);
Note that
all values are represented as strings. Numeric values represent simple inputs,
while option inputs are represented by their string values. See 2.4. for option
inputs description.
3.5 Start NNDefRun calculation engine.
3.5.1 For single threaded mode use:
r.execute();
3.5.2 Alternatively, you can use:
r.start();
This will
run the task in a separate thread
3.6 Use following methods to retrieve the resulting values
and corresponding output names:
String[] outputs = r.getDirectOutputs();
String[] outputNames = r.getOutputNames();for (int i=0; i<outputs.length; i++){
System.out.println("Output "+outputNames[i]+" has value "+outputs[i]);
}
Alternatively you can bypass any data translation use:
r.setInputs(doubleInputs[]);
and
doubleOunputs[] = r.getOutnputs();