use of org.dmg.pmml.NeuralInputsDocument.NeuralInputs in project knime-core by knime.
the class PMMLNeuralNetworkTranslator method addInputLayer.
/**
* Writes the PMML input layer of the MLP.
*
* @param nnModel
* the Neural Network model.
* @param mlp
* the underlying {@link MultiLayerPerceptron}.
*/
protected void addInputLayer(final NeuralNetwork nnModel, final MultiLayerPerceptron mlp) {
Layer inputlayer = mlp.getLayer(0);
Perceptron[] inputperceptrons = inputlayer.getPerceptrons();
HashMap<String, Integer> inputmap = mlp.getInputMapping();
NeuralInputs neuralInputs = nnModel.addNewNeuralInputs();
neuralInputs.setNumberOfInputs(BigInteger.valueOf(inputperceptrons.length));
for (int i = 0; i < inputperceptrons.length; i++) {
NeuralInput neuralInput = neuralInputs.addNewNeuralInput();
neuralInput.setId(0 + "," + i);
// search corresponding input column
String colname = "";
for (Entry<String, Integer> e : inputmap.entrySet()) {
if (e.getValue().equals(i)) {
colname = e.getKey();
}
}
DerivedField df = neuralInput.addNewDerivedField();
df.setOptype(OPTYPE.CONTINUOUS);
df.setDataType(DATATYPE.DOUBLE);
FieldRef fieldRef = df.addNewFieldRef();
fieldRef.setField(m_nameMapper.getDerivedFieldName(colname));
}
}
use of org.dmg.pmml.NeuralInputsDocument.NeuralInputs in project knime-core by knime.
the class PMMLNeuralNetworkTranslator method initInputLayer.
/**
* @param nnModel the PMML neural network model
*/
private void initInputLayer(final NeuralNetwork nnModel) {
NeuralInputs neuralInputs = nnModel.getNeuralInputs();
m_idPosMap = new HashMap<String, Integer>();
m_curPerceptrons = new Vector<Perceptron>();
m_inputmap = new HashMap<String, Integer>();
m_counter = 0;
m_curLayer = 0;
for (NeuralInput ni : neuralInputs.getNeuralInputArray()) {
m_curPercpetronID = ni.getId();
String fieldName = m_nameMapper.getColumnName(ni.getDerivedField().getFieldRef().getField());
Perceptron p = new InputPerceptron();
p.setClassValue(fieldName);
m_inputmap.put(fieldName, m_counter);
m_curPerceptrons.add(p);
m_idPosMap.put(m_curPercpetronID, m_counter);
m_counter++;
}
Perceptron[] curPerceptrons = new Perceptron[m_curPerceptrons.size()];
curPerceptrons = m_curPerceptrons.toArray(curPerceptrons);
m_predLayer = new InputLayer(curPerceptrons);
m_allLayers.add(m_curLayer, new InputLayer(curPerceptrons));
m_predPerceptrons = curPerceptrons;
m_predidPosMap = new HashMap<String, Integer>(m_idPosMap);
}
use of org.dmg.pmml.NeuralInputsDocument.NeuralInputs in project knime-core by knime.
the class PMMLNeuralNetworkTranslator method addInputLayer.
/**
* Writes the PMML input layer of the MLP.
*
* @param nnModel
* the Neural Network model.
* @param mlp
* the underlying {@link MultiLayerPerceptron}.
*/
protected void addInputLayer(final NeuralNetwork nnModel, final MultiLayerPerceptron mlp) {
Layer inputlayer = mlp.getLayer(0);
Perceptron[] inputperceptrons = inputlayer.getPerceptrons();
HashMap<String, Integer> inputmap = mlp.getInputMapping();
NeuralInputs neuralInputs = nnModel.addNewNeuralInputs();
neuralInputs.setNumberOfInputs(BigInteger.valueOf(inputperceptrons.length));
for (int i = 0; i < inputperceptrons.length; i++) {
NeuralInput neuralInput = neuralInputs.addNewNeuralInput();
neuralInput.setId(0 + "," + i);
// search corresponding input column
String colname = "";
for (Entry<String, Integer> e : inputmap.entrySet()) {
if (e.getValue().equals(i)) {
colname = e.getKey();
}
}
DerivedField df = neuralInput.addNewDerivedField();
df.setOptype(OPTYPE.CONTINUOUS);
df.setDataType(DATATYPE.DOUBLE);
FieldRef fieldRef = df.addNewFieldRef();
fieldRef.setField(m_nameMapper.getDerivedFieldName(colname));
}
}
use of org.dmg.pmml.NeuralInputsDocument.NeuralInputs in project knime-core by knime.
the class PMMLNeuralNetworkTranslator method initInputLayer.
/**
* @param nnModel the PMML neural network model
*/
private void initInputLayer(final NeuralNetwork nnModel) {
NeuralInputs neuralInputs = nnModel.getNeuralInputs();
m_idPosMap = new HashMap<String, Integer>();
m_curPerceptrons = new Vector<Perceptron>();
m_inputmap = new HashMap<String, Integer>();
m_counter = 0;
m_curLayer = 0;
for (NeuralInput ni : neuralInputs.getNeuralInputArray()) {
m_curPercpetronID = ni.getId();
String fieldName = m_nameMapper.getColumnName(ni.getDerivedField().getFieldRef().getField());
Perceptron p = new InputPerceptron();
p.setClassValue(fieldName);
m_inputmap.put(fieldName, m_counter);
m_curPerceptrons.add(p);
m_idPosMap.put(m_curPercpetronID, m_counter);
m_counter++;
}
Perceptron[] curPerceptrons = new Perceptron[m_curPerceptrons.size()];
curPerceptrons = m_curPerceptrons.toArray(curPerceptrons);
m_predLayer = new InputLayer(curPerceptrons);
m_allLayers.add(m_curLayer, new InputLayer(curPerceptrons));
m_predPerceptrons = curPerceptrons;
m_predidPosMap = new HashMap<String, Integer>(m_idPosMap);
}
Aggregations