@Override public void learn(double[] x, int y) { learn(x, y, 1.0); }
/** * Trains the neural network with the given dataset for one epoch by * stochastic gradient descent. * * @param x training instances. * @param y training labels in [0, k), where k is the number of classes. */ public void learn(double[][] x, int[] y) { int n = x.length; int[] index = Math.permutate(n); for (int i = 0; i < n; i++) { learn(x[index[i]], y[index[i]]); } } }
learn(x, target, weight);
@Override public NeuralNetwork train(double[][] x, int[] y) { NeuralNetwork net = new NeuralNetwork(errorFunction, activationFunction, numUnits); net.setLearningRate(eta); net.setMomentum(alpha); net.setWeightDecay(lambda); for (int i = 1; i <= epochs; i++) { net.learn(x, y); logger.info("Neural network learns epoch {}", i); } return net; } }
NeuralNetwork neuralNetwork = new Perceptron(2, 1); DataSet trainingSet = new DataSet(2, 1); trainingSet.addRow(new DataSetRow(new double[]{0, 0}, new double[]{0})); trainingSet.addRow(new DataSetRow(new double[]{0, 1}, new double[]{1})); trainingSet.addRow(new DataSetRow(new double[]{1, 0}, new double[]{1})); trainingSet.addRow(new DataSetRow(new double[]{1, 1}, new double[]{1})); neuralNetwork.learn(trainingSet); neuralNetwork.save("/tmp/or_perceptron.nnet");