Package com.github.neuralnetworks.util

Examples of com.github.neuralnetworks.util.Matrix


    @Test
    public void testWeightedSumFF() {
  Environment.getInstance().setExecutionMode(EXECUTION_MODE.GPU);

  Matrix o = new Matrix(2, 2);

  Layer il1 = new Layer();
  Layer ol = new Layer();
  Layer il2 = new Layer();
  FullyConnected c1 = new FullyConnected(il1, ol, 3, 2);
  FullyConnected c2 = new FullyConnected(il2, ol, 3, 2);
  FullyConnected bc = new FullyConnected(new Layer(), ol, 1, 2);

  Matrix cg = c1.getConnectionGraph();
  cg.set(1, 0, 0);
  cg.set(2, 0, 1);
  cg.set(3, 0, 2);
  cg.set(4, 1, 0);
  cg.set(5, 1, 1);
  cg.set(6, 1, 2);

  cg = c2.getConnectionGraph();
  cg.set(1, 0, 0);
  cg.set(2, 0, 1);
  cg.set(3, 0, 2);
  cg.set(4, 1, 0);
  cg.set(5, 1, 1);
  cg.set(6, 1, 2);

  Matrix i1 = new Matrix(3, 2);
  i1.set(1, 0, 0);
  i1.set(2, 1, 0);
  i1.set(3, 2, 0);
  i1.set(4, 0, 1);
  i1.set(5, 1, 1);
  i1.set(6, 2, 1);

  Matrix i2 = new Matrix(3, 2);
  i2.set(1, 0, 0);
  i2.set(2, 1, 0);
  i2.set(3, 2, 0);
  i2.set(4, 0, 1);
  i2.set(5, 1, 1);
  i2.set(6, 2, 1);

  Matrix bcg = bc.getConnectionGraph();
  bcg.set(0.1f, 0, 0);
  bcg.set(0.2f, 1, 0);

  ConnectionCalculatorFullyConnected aws = new AparapiWeightedSumConnectionCalculator();

  List<Connections> connections = new ArrayList<>();
  connections.add(c1);
View Full Code Here


    @Test
    public void testWeightedSumBP() {
  Environment.getInstance().setExecutionMode(EXECUTION_MODE.GPU);

  Matrix o = new Matrix(2, 2);

  Layer il1 = new Layer();
  Layer ol = new Layer();
  Layer il2 = new Layer();
  FullyConnected c1 = new FullyConnected(ol, il1, 2, 3);
  FullyConnected c2 = new FullyConnected(ol, il2, 2, 3);
  FullyConnected bc = new FullyConnected(new Layer(), ol, 1, 2);

  Matrix cg = c1.getConnectionGraph();
  cg.set(1, 0, 0);
  cg.set(2, 1, 0);
  cg.set(3, 2, 0);
  cg.set(4, 0, 1);
  cg.set(5, 1, 1);
  cg.set(6, 2, 1);

  cg = c2.getConnectionGraph();
  cg.set(1, 0, 0);
  cg.set(2, 1, 0);
  cg.set(3, 2, 0);
  cg.set(4, 0, 1);
  cg.set(5, 1, 1);
  cg.set(6, 2, 1);

  Matrix i1 = new Matrix(3, 2);
  i1.set(1, 0, 0);
  i1.set(2, 1, 0);
  i1.set(3, 2, 0);
  i1.set(4, 0, 1);
  i1.set(5, 1, 1);
  i1.set(6, 2, 1);

  Matrix i2 = new Matrix(3, 2);
  i2.set(1, 0, 0);
  i2.set(2, 1, 0);
  i2.set(3, 2, 0);
  i2.set(4, 0, 1);
  i2.set(5, 1, 1);
  i2.set(6, 2, 1);

  Matrix bcg = bc.getConnectionGraph();
  bcg.set(0.1f, 0, 0);
  bcg.set(0.2f, 1, 0);

  ConnectionCalculatorFullyConnected aws = new AparapiWeightedSumConnectionCalculator();

  List<Connections> connections = new ArrayList<>();
  connections.add(c1);
View Full Code Here

    @Test
    public void testSigmoidBP() {
  NeuralNetworkImpl mlp = NNFactory.mlpSigmoid(new int[] { 2, 2, 1 }, false);

  FullyConnected c1 = (FullyConnected) mlp.getInputLayer().getConnections().iterator().next();
  Matrix cg1 = c1.getConnectionGraph();
  cg1.set(0.1f, 0, 0);
  cg1.set(0.8f, 0, 1);
  cg1.set(0.4f, 1, 0);
  cg1.set(0.6f, 1, 1);

  FullyConnected c2 = (FullyConnected) mlp.getOutputLayer().getConnections().iterator().next();
  Matrix cg2 = c2.getConnectionGraph();
  cg2.set(0.3f, 0, 0);
  cg2.set(0.9f, 0, 1);

  BackPropagationTrainer<?> bpt = TrainerFactory.backPropagation(mlp, new SimpleInputProvider(new float[][] { { 0.35f, 0.9f } }, new float[][] { { 0.5f } }, 1, 1), new SimpleInputProvider(new float[][] { { 0.35f, 0.9f } }, new float[][] { { 0.5f } }, 1, 1), null, null, 1f, 0f, 0f, 0f);
  bpt.train();

  assertEquals(0.09916, cg1.get(0, 0), 0.01);
  assertEquals(0.7978, cg1.get(0, 1), 0.01);
  assertEquals(0.3972, cg1.get(1, 0), 0.01);
  assertEquals(0.5928, cg1.get(1, 1), 0.01);
  assertEquals(0.272392, cg2.get(0, 0), 0.01);
  assertEquals(0.87305, cg2.get(0, 1), 0.01);
    }
View Full Code Here

    public void testSigmoidBP2() {
  NeuralNetworkImpl mlp = NNFactory.mlpSigmoid(new int[] { 3, 2, 1 }, true);

  List<Connections> c = mlp.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getConnectionGraph();
  cg1.set(0.2f, 0, 0);
  cg1.set(0.4f, 0, 1);
  cg1.set(-0.5f, 0, 2);
  cg1.set(-0.3f, 1, 0);
  cg1.set(0.1f, 1, 1);
  cg1.set(0.2f, 1, 2);

  FullyConnected cb1 = (FullyConnected) c.get(1);
  Matrix cgb1 = cb1.getConnectionGraph();
  cgb1.set(-0.4f, 0, 0);
  cgb1.set(0.2f, 1, 0);

  FullyConnected c2 = (FullyConnected) c.get(2);
  Matrix cg2 = c2.getConnectionGraph();
  cg2.set(-0.3f, 0, 0);
  cg2.set(-0.2f, 0, 1);

  FullyConnected cb2 = (FullyConnected) c.get(3);
  Matrix cgb2 = cb2.getConnectionGraph();
  cgb2.set(0.1f, 0, 0);

  BackPropagationTrainer<?> bpt = TrainerFactory.backPropagation(mlp, new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }, 1, 1), new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }, 1, 1), null, null, 0.9f, 0f, 0f, 0f);
  bpt.train();

  assertEquals(0.192, cg1.get(0, 0), 0.001);
  assertEquals(0.4, cg1.get(0, 1), 0.001);
  assertEquals(-0.508, cg1.get(0, 2), 0.001);
  assertEquals(-0.306, cg1.get(1, 0), 0.001);
  assertEquals(0.1, cg1.get(1, 1), 0.001);
  assertEquals(0.194, cg1.get(1, 2), 0.001);

  assertEquals(-0.261, cg2.get(0, 0), 0.001);
  assertEquals(-0.138, cg2.get(0, 1), 0.001);

  assertEquals(-0.408, cgb1.get(0, 0), 0.001);
  assertEquals(0.194, cgb1.get(1, 0), 0.001);

  assertEquals(0.218, cgb2.get(0, 0), 0.001);
    }
View Full Code Here

      // log test results
      if (isTesting && logTestResults) {
    MiniBatchFinishedEvent mbe = (MiniBatchFinishedEvent) event;
    if (mbe.getResults() != null) {
        Matrix input = mbe.getData().getInput();
        Matrix target = mbe.getData().getTarget();
        Trainer<?> t = (Trainer<?>) mbe.getSource();
        Matrix networkOutput = mbe.getResults().getValues(t.getNeuralNetwork().getOutputLayer());

        for (int i = 0; i < input.getColumns(); i++) {
      sb.append(s);
      sb.append("Input:  ");

      for (int j = 0; j < input.getRows(); j++) {
          sb.append(input.get(j, i)).append("  ");
      }

      sb.append(s);
      sb.append("Output: ");
      for (int j = 0; j < networkOutput.getRows(); j++) {
          sb.append(networkOutput.get(j, i)).append("  ");
      }

      sb.append(s);
      sb.append("Target: ");
      for (int j = 0; j < target.getRows(); j++) {
View Full Code Here

  Util.fillArray(fc4.getConnectionGraph().getElements(), 0.4f);
  mlp.addConnection(fc4);

  mlp.setLayerCalculator(NNFactory.lcWeightedSum(mlp, null));

  Matrix i = new Matrix(new float [] {2, 2}, 1);
  Set<Layer> calculated = new HashSet<>();
  calculated.add(mlp.getInputLayer());

  ValuesProvider results = new ValuesProvider();
  results.addValues(input, i);
View Full Code Here

  data = new SimpleTrainingInputData(null, null);

  if (input != null) {
      this.input  = input;
      data.setInput(new Matrix(input[0].length, miniBatchSize));
  }

  if (target != null) {
      this.target = target;
      data.setTarget(new Matrix(target[0].length, miniBatchSize));
  }
    }
View Full Code Here

  nn.addLayer(i);

  NNFactory.addFullyConnectedLayer(nn, h, 2, 3, true);
  NNFactory.addFullyConnectedLayer(nn, o, 4, 1, true);

  Matrix im = new Matrix(2, 2);
  vp.addValues(i, im);
  Matrix hm1 = vp.getValues(h, 3);
  Matrix hm2 = new Matrix(4, 2);
  vp.addValues(h, hm2);

  Matrix om = vp.getValues(o);

  assertTrue(im == vp.getValues(i, 2));
  assertTrue(im == vp.getValues(i));
  assertTrue(hm1 == vp.getValues(h, 3));
  assertTrue(hm2 == vp.getValues(h, 4));
View Full Code Here

    @Test
    public void testSoftMax() {
  Tensor t = new Tensor(5, 4, 2);
  IntStream.range(0, t.getElements().length).forEach(i -> t.getElements()[i] = i + 1);
  Matrix m = new Matrix(t, new int[] { 1, 1, 1 }, new int[] { 3, 2, 1 });
  m.set(1, 0, 0);
  m.set(2, 1, 0);
  m.set(3, 2, 0);
  m.set(4, 0, 1);
  m.set(5, 1, 1);
  m.set(6, 2, 1);

  SoftmaxFunction sf = new SoftmaxFunction();
  Environment.getInstance().setExecutionMode(EXECUTION_MODE.SEQ);
  sf.value(m);

  assertEquals(1 / 6f, m.get(0, 0), 0);
  assertEquals(2 / 6f, m.get(1, 0), 0);
  assertEquals(3 / 6f, m.get(2, 0), 0);
  assertEquals(4 / 15f, m.get(0, 1), 0);
  assertEquals(5 / 15f, m.get(1, 1), 0);
  assertEquals(6 / 15f, m.get(2, 1), 0);
    }
View Full Code Here

  assertEquals(112, t2.get(1, 2, 1), 0);
    }

    @Test
    public void testMatrix() {
  Matrix m = new Matrix(5, 6);

  assertEquals(5, m.getRows(), 0);
  assertEquals(6, m.getColumns(), 0);
  assertEquals(6, m.getDimensionElementsDistance(0), 0);
  assertEquals(1, m.getDimensionElementsDistance(1), 0);
  assertEquals(5, m.getDimensionLength(0), 0);
  assertEquals(6, m.getDimensionLength(1), 0);

  for (int i = 0; i < m.getElements().length; i++) {
      m.getElements()[i] = i + 1;
  }

  assertEquals(2, m.get(0, 1), 0);
  assertEquals(15, m.get(2, 2), 0);

  m = new Matrix(1, 6);
  for (int i = 0; i < m.getElements().length; i++) {
      m.getElements()[i] = i + 1;
  }

  assertEquals(2, m.get(0, 1), 0);
  assertEquals(6, m.get(0, 5), 0);

  m = new Matrix(6, 1);
  for (int i = 0; i < m.getElements().length; i++) {
      m.getElements()[i] = i + 1;
  }

  assertEquals(2, m.get(1, 0), 0);
  assertEquals(6, m.get(5, 0), 0);

  // submatrix
  Tensor t = new Tensor(5, 5, 5);
  float[] elements = t.getElements();

  for (int i = 0; i < elements.length; i++) {
      elements[i] = i + 1;
  }

  m = new Matrix(t, new int[] {1, 0, 0}, new int[] {1, 4, 4});
  assertEquals(26, m.get(0, 0), 0);
  assertEquals(27, m.get(0, 1), 0);
  assertEquals(36, m.get(2, 0), 0);
  assertEquals(38, m.get(2, 2), 0);

  m = new Matrix(t, new int[] {1, 0, 0}, new int[] {1, 4, 4});
  assertEquals(26, m.get(0, 0), 0);
  assertEquals(27, m.get(0, 1), 0);
  assertEquals(36, m.get(2, 0), 0);
  assertEquals(38, m.get(2, 2), 0);

  m = new Matrix(t, new int[] {0, 0, 1}, new int[] {4, 4, 1});
  assertEquals(2, m.get(0, 0), 0);
  assertEquals(7, m.get(0, 1), 0);
  assertEquals(12, m.get(0, 2), 0);
  assertEquals(27, m.get(1, 0), 0);
  assertEquals(32, m.get(1, 1), 0);
  assertEquals(37, m.get(1, 2), 0);

  m = new Matrix(t, new int[] {2, 2, 1}, new int[] {3, 3, 1});
  assertEquals(62, m.get(0, 0), 0);
  assertEquals(67, m.get(0, 1), 0);
  assertEquals(92, m.get(1, 1), 0);

  m = new Matrix(4, 4);
  for (int i = 0; i < m.getElements().length; i++) {
      m.getElements()[i] = i + 1;
  }

  Matrix m2 = new Matrix(m, new int[] {1,1}, new int[] {2, 2});
  assertEquals(6, m2.get(0, 0), 0);
  assertEquals(7, m2.get(0, 1), 0);
  assertEquals(10, m2.get(1, 0), 0);
  assertEquals(11, m2.get(1, 1), 0);
    }
View Full Code Here

TOP

Related Classes of com.github.neuralnetworks.util.Matrix

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.