/** * Create an instance of {@link NeuralNetwork } * */ public NeuralNetwork createNeuralNetwork() { return new NeuralNetwork(); }
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = PMMLObject.traverse(visitor, getExtensions()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getMiningSchema(), getOutput(), getModelStats(), getModelExplanation(), getTargets(), getLocalTransformations(), getNeuralInputs()); } if ((status == VisitorAction.CONTINUE)&&hasNeuralLayers()) { status = PMMLObject.traverse(visitor, getNeuralLayers()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getNeuralOutputs(), getModelVerification()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
NeuralNetwork neuralNetwork = new NeuralNetwork(MiningFunction.CLASSIFICATION, NeuralNetwork.ActivationFunction.LOGISTIC, ModelUtil.createMiningSchema(categoricalLabel), neuralInputs, neuralLayers) .setNeuralOutputs(NeuralNetworkUtil.createClassificationNeuralOutputs(entities, categoricalLabel));
NeuralNetwork neuralNetwork = new NeuralNetwork(miningFunction, NeuralNetwork.ActivationFunction.IDENTITY, ModelUtil.createMiningSchema(label), neuralInputs, neuralLayers); .setNeuralOutputs(NeuralNetworkUtil.createRegressionNeuralOutputs(entities, (ContinuousLabel)label)); break; case CLASSIFICATION: neuralNetwork .setNeuralOutputs(NeuralNetworkUtil.createClassificationNeuralOutputs(entities, (CategoricalLabel)label)) .setOutput(ModelUtil.createProbabilityOutput(DataType.DOUBLE, (CategoricalLabel)label)); break;
public NeuralNetworkEvaluator(PMML pmml, NeuralNetwork neuralNetwork){ super(pmml, neuralNetwork); NeuralInputs neuralInputs = neuralNetwork.getNeuralInputs(); if(neuralInputs == null){ throw new MissingElementException(neuralNetwork, PMMLElements.NEURALNETWORK_NEURALINPUTS); } // End if if(!neuralInputs.hasNeuralInputs()){ throw new MissingElementException(neuralInputs, PMMLElements.NEURALINPUTS_NEURALINPUTS); } // End if if(!neuralNetwork.hasNeuralLayers()){ throw new MissingElementException(neuralNetwork, PMMLElements.NEURALNETWORK_NEURALLAYERS); } NeuralOutputs neuralOutputs = neuralNetwork.getNeuralOutputs(); if(neuralOutputs == null){ throw new MissingElementException(neuralNetwork, PMMLElements.NEURALNETWORK_NEURALOUTPUTS); } // End if if(!neuralOutputs.hasNeuralOutputs()){ throw new MissingElementException(neuralOutputs, PMMLElements.NEURALOUTPUTS_NEURALOUTPUTS); } }
NeuralInputs neuralInputs = neuralNetwork.getNeuralInputs(); for(NeuralInput neuralInput : neuralInputs){ DerivedField derivedField = neuralInput.getDerivedField(); List<NeuralLayer> neuralLayers = neuralNetwork.getNeuralLayers(); for(NeuralLayer neuralLayer : neuralLayers){ outputs.clear(); locatable = neuralNetwork; activationFunction = neuralNetwork.getActivationFunction(); threshold = neuralNetwork.getThreshold(); locatable = neuralNetwork; normalizationMethod = neuralNetwork.getNormalizationMethod();
@Override public BiMap<String, Entity> load(NeuralNetwork neuralNetwork){ ImmutableBiMap.Builder<String, Entity> builder = new ImmutableBiMap.Builder<>(); AtomicInteger index = new AtomicInteger(1); NeuralInputs neuralInputs = neuralNetwork.getNeuralInputs(); for(NeuralInput neuralInput : neuralInputs){ builder = EntityUtil.put(neuralInput, index, builder); } List<NeuralLayer> neuralLayers = neuralNetwork.getNeuralLayers(); for(NeuralLayer neuralLayer : neuralLayers){ List<Neuron> neurons = neuralLayer.getNeurons(); for(int i = 0; i < neurons.size(); i++){ Neuron neuron = neurons.get(i); builder = EntityUtil.put(neuron, index, builder); } } return builder.build(); } });
@Override public Collection<?> getCollection(){ return neuralNetwork.getNeuralLayers(); } });
private Map<FieldName, List<NeuralOutput>> parseNeuralOutputs(){ NeuralNetwork neuralNetwork = getModel(); ListMultimap<FieldName, NeuralOutput> result = ArrayListMultimap.create(); NeuralOutputs neuralOutputs = neuralNetwork.getNeuralOutputs(); for(NeuralOutput neuralOutput : neuralOutputs){ FieldName name; Expression expression = getOutputExpression(neuralOutput); if(expression instanceof HasFieldReference){ HasFieldReference<?> hasFieldReference = (HasFieldReference<?>)expression; name = hasFieldReference.getField(); if(name == null){ throw new MissingAttributeException(MissingAttributeException.formatMessage(XPathUtil.formatElement((Class)hasFieldReference.getClass()) + "@field"), expression); } } else { throw new MisplacedElementException(expression); } result.put(name, neuralOutput); } return (Map)result.asMap(); }
@Override public NeuralNetwork encodeModel(Schema schema){ String activation = getActivation(); List<? extends HasArray> coefs = getCoefs(); List<? extends HasArray> intercepts = getIntercepts(); NeuralNetwork neuralNetwork = MultilayerPerceptronUtil.encodeNeuralNetwork(MiningFunction.CLASSIFICATION, activation, coefs, intercepts, schema) .setOutput(ModelUtil.createProbabilityOutput(DataType.DOUBLE, (CategoricalLabel)schema.getLabel())); return neuralNetwork; }
NeuralNetwork neuralNetwork = new NeuralNetwork(miningFunction, activationFunction, ModelUtil.createMiningSchema(label), neuralInputs, neuralLayers) .setNeuralOutputs(neuralOutputs);
public NeuralNetwork addNeuralLayers(NeuralLayer... neuralLayers) { getNeuralLayers().addAll(Arrays.asList(neuralLayers)); return this; }
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = PMMLObject.traverse(visitor, getExtensions()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getMiningSchema(), getOutput(), getModelStats(), getModelExplanation(), getTargets(), getLocalTransformations(), getNeuralInputs()); } if ((status == VisitorAction.CONTINUE)&&hasNeuralLayers()) { status = PMMLObject.traverse(visitor, getNeuralLayers()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getNeuralOutputs(), getModelVerification()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
NeuralNetwork neuralNetwork = new NeuralNetwork(MiningFunction.REGRESSION, NeuralNetwork.ActivationFunction.IDENTITY, ModelUtil.createMiningSchema(continuousLabel), neuralInputs, neuralLayers) .setNeuralOutputs(NeuralNetworkUtil.createRegressionNeuralOutputs(entities, continuousLabel));
/** * Create an instance of {@link NeuralNetwork } * */ public NeuralNetwork createNeuralNetwork() { return new NeuralNetwork(); }
public NeuralNetwork addNeuralLayers(NeuralLayer... neuralLayers) { getNeuralLayers().addAll(Arrays.asList(neuralLayers)); return this; }
NeuralNetwork neuralNetwork = new NeuralNetwork(MiningFunction.REGRESSION, NeuralNetwork.ActivationFunction.IDENTITY, ModelUtil.createMiningSchema(label), neuralInputs, neuralLayers) .setNeuralOutputs(neuralOutputs);
@Test public void inspectTypeAnnotations(){ PMML pmml = createPMML(); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); pmml.addModels(new AssociationModel(), //new ClusteringModel(), //new GeneralRegressionModel(), //new MiningModel(), new NaiveBayesModel(), new NeuralNetwork(), new RegressionModel(), new RuleSetModel(), new SequenceModel(), //new SupportVectorMachineModel(), new TextModel(), new TreeModel()); assertVersionRange(pmml, Version.PMML_3_0, Version.PMML_4_3); pmml.addModels(new TimeSeriesModel()); assertVersionRange(pmml, Version.PMML_4_0, Version.PMML_4_3); pmml.addModels(new BaselineModel(), new Scorecard(), new NearestNeighborModel()); assertVersionRange(pmml, Version.PMML_4_1, Version.PMML_4_3); pmml.addModels(new BayesianNetworkModel(), new GaussianProcessModel()); assertVersionRange(pmml, Version.PMML_4_3, Version.PMML_4_3); }