package org.encog.examples.neural.predict.simple;
import org.encog.engine.network.activation.ActivationLinear;
import org.encog.engine.network.activation.ActivationSigmoid;
import org.encog.neural.data.NeuralData;
import org.encog.neural.data.basic.BasicNeuralData;
import org.encog.neural.data.temporal.TemporalDataDescription;
import org.encog.neural.data.temporal.TemporalNeuralDataSet;
import org.encog.neural.data.temporal.TemporalPoint;
import org.encog.neural.data.temporal.TemporalDataDescription.Type;
import org.encog.neural.networks.BasicNetwork;
import org.encog.neural.networks.layers.BasicLayer;
import org.encog.neural.networks.logic.FeedforwardLogic;
import org.encog.util.simple.EncogUtility;
public class MultiOutput {
public static void main(String[] args)
{
final int INPUT_SIZE = 5;
final int OUTPUT_SIZE = 10;
TemporalNeuralDataSet temporal = new TemporalNeuralDataSet(INPUT_SIZE,OUTPUT_SIZE);
temporal.addDescription(new TemporalDataDescription(Type.RAW, true, true));
for(int i=0;i<100;i++)
{
TemporalPoint tp = temporal.createPoint(i);
tp.setData(0, i/100.0);
}
temporal.generate();
//BasicNetwork network = EncogUtility.simpleFeedForward(INPUT_SIZE, 50, 0, OUTPUT_SIZE, true);
BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(new ActivationSigmoid(),true,INPUT_SIZE));
network.addLayer(new BasicLayer(new ActivationSigmoid(),true,30));
network.addLayer(new BasicLayer(new ActivationLinear(),true,OUTPUT_SIZE));
network.setLogic(new FeedforwardLogic());
network.getStructure().finalizeStructure();
network.reset();
EncogUtility.trainToError(network, temporal, 0.002);
double[] array = {0.1,0.2,0.3,0.4,0.5};
NeuralData input = new BasicNeuralData(array);
NeuralData output = network.compute(input);
EncogUtility.evaluate(network, temporal);
System.out.println(output.toString());
}
}