Package com.github.neuralnetworks.tensor

Examples of com.github.neuralnetworks.tensor.Matrix


  //Environment.getInstance().setExecutionMode(EXECUTION_MODE.SEQ);
  Environment.getInstance().setUseWeightsSharedMemory(true);
  Environment.getInstance().setUseDataSharedMemory(true);
  RBM rbm = NNFactory.rbm(3, 2, true);

  Matrix cg1 = rbm.getMainConnections().getWeights();
  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);

  Matrix cgb1 = rbm.getVisibleBiasConnections().getWeights();
  cgb1.set(0f, 0, 0);
  cgb1.set(0f, 1, 0);
  cgb1.set(0f, 2, 0);

  Matrix cgb2 = rbm.getHiddenBiasConnections().getWeights();
  cgb2.set(-0.4f, 0, 0);
  cgb2.set(0.2f, 1, 0);

  AparapiCDTrainer t = TrainerFactory.cdSigmoidTrainer(rbm, new SimpleInputProvider(new float[][] { { 1, 0, 1 }, { 1, 1, 0 } }, null), null, null, null, 1f, 0f, 0f, 0f, 1, 1, 1, false);

  t.train();

  assertEquals(0.86090606, cgb1.get(0, 0), 0.00001);
  assertEquals(0.089616358, cgb1.get(1, 0), 0.00001);
  assertEquals(-0.11872697, cgb1.get(2, 0), 0.00001);

  assertEquals(-0.3744152, cgb2.get(0, 0), 0.00001);
  assertEquals(0.0663045, cgb2.get(1, 0), 0.00001);

  assertEquals(0.5768927, cg1.get(0, 0), 0.00001);
  assertEquals(0.5328304,  cg1.get(0, 1), 0.00001);
  assertEquals(-0.619481, cg1.get(0, 2), 0.00001);
  assertEquals(0.0543526, cg1.get(1, 0), 0.00001);
View Full Code Here


  Tensor weights = TensorFactory.tensor(2, 3, 2);
  FullyConnected c1 = new FullyConnected(ol, il1, TensorFactory.tensor(weights, new int[][]{{0, 0, 0}, {0, 2, 1}}));
  FullyConnected c2 = new FullyConnected(ol, il2, TensorFactory.tensor(weights, new int[][]{{1, 0, 0}, {1, 2, 1}}));
  FullyConnected bc = new FullyConnected(new Layer(), ol, 1, 2);

  Matrix cg = c1.getWeights();
  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.getWeights();
  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 bcg = bc.getWeights();
  bcg.set(0.1f, 0, 0);
  bcg.set(0.2f, 1, 0);

  ConnectionCalculatorFullyConnected aws = new AparapiWeightedSumConnectionCalculator();

  List<Connections> connections = new ArrayList<>();
  connections.add(c1);
  NeuralNetworkImpl nn = new NeuralNetworkImpl();
  nn.addConnections(connections.toArray(new Connections[connections.size()]));
  ValuesProvider vp = TensorFactory.tensorProvider(nn, 2, true);

  Matrix i1 = vp.get(il1);
  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);

  aws.calculate(connections, vp, ol);

  // most simple case
  Matrix o = vp.get(ol);
  assertEquals(14, o.get(0, 0), 0);
  assertEquals(32, o.get(0, 1), 0);
  assertEquals(32, o.get(1, 0), 0);
  assertEquals(77, o.get(1, 1), 0);

  // with bias
  connections = new ArrayList<>();
  connections.add(c1);
  connections.add(bc);
  nn = new NeuralNetworkImpl();
  nn.addConnections(connections.toArray(new Connections[connections.size()]));
  vp = TensorFactory.tensorProvider(nn, 2, true);
  i1 = vp.get(il1);
  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);

  aws = new AparapiWeightedSumConnectionCalculator();
  aws.calculate(connections, vp, ol);

  o = vp.get(ol);
  assertEquals(14.1, o.get(0, 0), 0.01);
  assertEquals(32.1, o.get(0, 1), 0.01);
  assertEquals(32.2, o.get(1, 0), 0.01);
  assertEquals(77.2, o.get(1, 1), 0.01);

  // combined layers
  connections = new ArrayList<>();
  connections.add(c1);
  connections.add(c2);
  connections.add(bc);
  nn = new NeuralNetworkImpl();
  nn.addConnections(connections.toArray(new Connections[connections.size()]));
  vp = TensorFactory.tensorProvider(nn, 2, true);

  i1 = vp.get(il1);
  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 = vp.get(il2);
  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);

  aws = new AparapiWeightedSumConnectionCalculator();
  aws.calculate(connections, vp, ol);

  o = vp.get(ol);
View Full Code Here

  Environment.getInstance().setExecutionMode(EXECUTION_MODE.SEQ);
  Environment.getInstance().setUseWeightsSharedMemory(true);
  NeuralNetworkImpl mlp = NNFactory.mlpSigmoid(new int[] { 2, 2, 1 }, false);

  FullyConnected c1 = (FullyConnected) mlp.getInputLayer().getConnections().iterator().next();
  Matrix cg1 = c1.getWeights();
  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.getWeights();
  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 } }), new SimpleInputProvider(new float[][] { { 0.35f, 0.9f } }, new float[][] { { 0.5f } }), null, null, 1f, 0f, 0f, 0f, 0f, 1, 1, 1);
  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

  Environment.getInstance().setUseWeightsSharedMemory(true);
  NeuralNetworkImpl mlp = NNFactory.mlpSigmoid(new int[] { 3, 2, 1 }, true);

  List<Connections> c = mlp.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getWeights();
  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.getWeights();
  cgb1.set(-0.4f, 0, 0);
  cgb1.set(0.2f, 1, 0);

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

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

  BackPropagationTrainer<?> bpt = TrainerFactory.backPropagation(mlp, new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }), new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }), null, null, 0.9f, 0f, 0f, 0f, 0f, 1, 1, 1);
  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

  Environment.getInstance().setUseWeightsSharedMemory(true);
  NeuralNetworkImpl mlp = NNFactory.mlpSigmoid(new int[] { 3, 2, 1 }, true);

  List<Connections> c = mlp.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getWeights();
  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.getWeights();
  cgb1.set(-0.4f, 0, 0);
  cgb1.set(0.2f, 1, 0);

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

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

  BackPropagationTrainer<?> bpt = TrainerFactory.backPropagation(mlp, new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }), new SimpleInputProvider(new float[][] { { 1, 0, 1 } }, new float[][] { { 1 } }), null, null, 0.9f, 0f, 0f, 0f, 0.01f, 1, 1, 1);
  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 * 0.99, cg2.get(0, 0), 0.001);
  assertEquals(-0.138 * 0.99, 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

  this.series = inputConnections.size();
  this.inputStartPositions = new int[series];
  this.inputRowSteps = new int[series];
  this.inputColumnSteps = new int[series];
  IntStream.range(0, inputConnections.size()).forEach(i -> {
      Matrix m = TensorFactory.tensor(Util.getOppositeLayer(inputConnections.get(i), targetLayer), inputConnections.get(i), valuesProvider);
      inputStartPositions[i] = m.getStartIndex();
      inputRowSteps[i] = m.getRowElementsDistance();
      inputColumnSteps[i] = m.getColumnElementsDistance();
  });

  // output
  Matrix o = TensorFactory.tensor(targetLayer, inputConnections, valuesProvider);
  this.output = o.getElements();
  this.outputStartPosition = o.getStartIndex();
  this.outputRowStep = o.getRowElementsDistance();
  this.outputColumnStep = o.getColumnElementsDistance();

  // weights
  this.weightStartPositions = new int[series];
  this.weightsSize = new int[series];
  this.weightsInitialStep = new int[series];
  this.weightsStep = new int[series];

  IntStream.range(0, inputConnections.size()).forEach(i -> {
      Matrix w = ((FullyConnected) inputConnections.get(i)).getWeights();
      weightStartPositions[i] = w.getStartIndex();
      if (inputConnections.get(0).getOutputLayer() == targetLayer) {
    weightsSize[i] = w.getColumns();
    weightsInitialStep[i] = w.getRowElementsDistance();
    weightsStep[i] = w.getColumnElementsDistance();
      } else {
    weightsSize[i] = w.getRows();
    weightsInitialStep[i] = w.getColumnElementsDistance();
    weightsStep[i] = w.getRowElementsDistance();
      }
  });
    }
View Full Code Here

  Environment.getInstance().setUseWeightsSharedMemory(true);
  NeuralNetworkImpl nn = NNFactory.maxout(new int[] { 2, 2 }, true, null);

  List<Connections> c = nn.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getWeights();
  cg1.set(0.1f, 0, 0);
  cg1.set(0.5f, 0, 1);
  cg1.set(0.1f, 1, 0);
  cg1.set(0.5f, 1, 1);

  FullyConnected cb1 = (FullyConnected) c.get(1);
  Matrix cgb1 = cb1.getWeights();
  cgb1.set(0.1f, 0, 0);
  cgb1.set(0.2f, 1, 0);

  ValuesProvider results = TensorFactory.tensorProvider(nn, 2, true);
  Matrix in = results.get(nn.getInputLayer());
  in.set(8, 0, 0);
  in.set(2, 1, 0);
  in.set(1, 0, 1);
  in.set(7, 1, 1);

  Set<Layer> calculated = new HashSet<>();
  calculated.add(nn.getInputLayer());
  nn.getLayerCalculator().calculate(nn, nn.getOutputLayer(), calculated, results);

  Matrix out = results.get(nn.getOutputLayer());
  assertEquals(1.1f, out.get(0, 0), 0f);
  assertEquals(1.2f, out.get(1, 0), 0f);
  assertEquals(3.6f, out.get(0, 1), 0f);
  assertEquals(3.7f, out.get(1, 1), 0f);

  int[] winners = MaxoutWinners.getInstance().getWinners();
  int startIndex = MaxoutWinners.getInstance().getStartPositions(Arrays.asList(new Connections[] {c.get(0)}))[0];
  assertEquals(1, winners[startIndex], 0);
  assertEquals(1, winners[startIndex + 1], 0);
View Full Code Here

    private int nextColumnStep;
    private int rows;

    @Override
    public void value(Tensor inputOutput) {
  Matrix io = (Matrix) inputOutput;

  this.values = io.getElements();
  this.startIndex = io.getStartIndex();
  this.nextRowStep = io.getRowElementsDistance();
  this.nextColumnStep = io.getColumnElementsDistance();
  this.rows = io.getRows();

  Environment.getInstance().getExecutionStrategy().execute(this, io.getColumns());
    }
View Full Code Here

  Environment.getInstance().setUseWeightsSharedMemory(true);
  NeuralNetworkImpl nn = NNFactory.maxout(new int[] { 2, 2 }, true, null);

  List<Connections> c = nn.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getWeights();
  cg1.set(0.1f, 0, 0);
  cg1.set(0.5f, 0, 1);
  cg1.set(0.1f, 1, 0);
  cg1.set(0.5f, 1, 1);

  FullyConnected cb1 = (FullyConnected) c.get(1);
  Matrix cgb1 = cb1.getWeights();
  cgb1.set(0.1f, 0, 0);
  cgb1.set(0.2f, 1, 0);

  ValuesProvider results = TensorFactory.tensorProvider(nn, 2, true);
  Matrix in = results.get(nn.getInputLayer());
  in.set(8, 0, 0);
  in.set(2, 1, 0);
  in.set(1, 0, 1);
  in.set(7, 1, 1);

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

  assertEquals(0.1f, cg1.get(0, 0), 0f);
View Full Code Here

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

  List<Connections> c = mlp.getConnections();
  FullyConnected c1 = (FullyConnected) c.get(0);
  Matrix cg1 = c1.getWeights();
  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.getWeights();
  cgb1.set(-0.4f, 0, 0);
  cgb1.set(0.2f, 1, 0);

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

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

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

  assertEquals(0.1849, cg1.get(0, 0), 0.0001);
  assertEquals(0.3927, cg1.get(0, 1), 0.0001);
  assertEquals(-0.508, cg1.get(0, 2), 0.001);
  assertEquals(-0.3098, cg1.get(1, 0), 0.0001);
  assertEquals(0.0961, cg1.get(1, 1), 0.0001);
  assertEquals(0.194, cg1.get(1, 2), 0.001);

  assertEquals(-0.1996, cg2.get(0, 0), 0.0001);
  assertEquals(-0.0823, cg2.get(0, 1), 0.0001);

  assertEquals(-0.4151, cgb1.get(0, 0), 0.0001);
  assertEquals(0.1902, cgb1.get(1, 0), 0.0001);

  assertEquals(0.3302, cgb2.get(0, 0), 0.0001);
    }
View Full Code Here

TOP

Related Classes of com.github.neuralnetworks.tensor.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.