Package aima.core.util.math

Examples of aima.core.util.math.Matrix


  public Matrix asMatrix() {
    return asMatrix(HmmConstants.DO_NOTHING);
  }

  public Matrix unitMatrix() {
    Matrix m = asMatrix();
    return Matrix.identity(m.getRowDimension(), m.getColumnDimension());
  }
View Full Code Here


  }

  public Matrix calculateWeightUpdates(LayerSensitivity layerSensitivity,
      Vector previousLayerActivationOrInput, double alpha, double momentum) {
    Layer layer = layerSensitivity.getLayer();
    Matrix activationTranspose = previousLayerActivationOrInput.transpose();
    Matrix momentumLessUpdate = layerSensitivity.getSensitivityMatrix()
        .times(activationTranspose).times(alpha).times(-1.0);
    Matrix updateWithMomentum = layer.getLastWeightUpdateMatrix()
        .times(momentum).plus(momentumLessUpdate.times(1.0 - momentum));
    layer.acceptNewWeightUpdate(updateWithMomentum.copy());
    return updateWithMomentum;
  }
View Full Code Here

  public static Matrix calculateWeightUpdates(
      LayerSensitivity layerSensitivity,
      Vector previousLayerActivationOrInput, double alpha) {
    Layer layer = layerSensitivity.getLayer();
    Matrix activationTranspose = previousLayerActivationOrInput.transpose();
    Matrix weightUpdateMatrix = layerSensitivity.getSensitivityMatrix()
        .times(activationTranspose).times(alpha).times(-1.0);
    layer.acceptNewWeightUpdate(weightUpdateMatrix.copy());
    return weightUpdateMatrix;
  }
View Full Code Here

  }

  public Vector calculateBiasUpdates(LayerSensitivity layerSensitivity,
      double alpha, double momentum) {
    Layer layer = layerSensitivity.getLayer();
    Matrix biasUpdateMatrixWithoutMomentum = layerSensitivity
        .getSensitivityMatrix().times(alpha).times(-1.0);

    Matrix biasUpdateMatrixWithMomentum = layer.getLastBiasUpdateVector()
        .times(momentum)
        .plus(biasUpdateMatrixWithoutMomentum.times(1.0 - momentum));
    Vector result = new Vector(
        biasUpdateMatrixWithMomentum.getRowDimension());
    for (int i = 0; i < biasUpdateMatrixWithMomentum.getRowDimension(); i++) {
      result.setValue(i, biasUpdateMatrixWithMomentum.get(i, 0));
    }
    layer.acceptNewBiasUpdate(result.copyVector());
    return result;
  }
View Full Code Here

  }

  public static Vector calculateBiasUpdates(
      LayerSensitivity layerSensitivity, double alpha) {
    Layer layer = layerSensitivity.getLayer();
    Matrix biasUpdateMatrix = layerSensitivity.getSensitivityMatrix()
        .times(alpha).times(-1.0);

    Vector result = new Vector(biasUpdateMatrix.getRowDimension());
    for (int i = 0; i < biasUpdateMatrix.getRowDimension(); i++) {
      result.setValue(i, biasUpdateMatrix.get(i, 0));
    }
    layer.acceptNewBiasUpdate(result.copyVector());
    return result;
  }
View Full Code Here

  public Layer(Matrix weightMatrix, Vector biasVector, ActivationFunction af) {

    activationFunction = af;
    this.weightMatrix = weightMatrix;
    lastWeightUpdateMatrix = new Matrix(weightMatrix.getRowDimension(),
        weightMatrix.getColumnDimension());
    penultimateWeightUpdateMatrix = new Matrix(
        weightMatrix.getRowDimension(),
        weightMatrix.getColumnDimension());

    this.biasVector = biasVector;
    lastBiasUpdateVector = new Vector(biasVector.getRowDimension());
View Full Code Here

  public Layer(int numberOfNeurons, int numberOfInputs,
      double lowerLimitForWeights, double upperLimitForWeights,
      ActivationFunction af) {

    activationFunction = af;
    this.weightMatrix = new Matrix(numberOfNeurons, numberOfInputs);
    lastWeightUpdateMatrix = new Matrix(weightMatrix.getRowDimension(),
        weightMatrix.getColumnDimension());
    penultimateWeightUpdateMatrix = new Matrix(
        weightMatrix.getRowDimension(),
        weightMatrix.getColumnDimension());

    this.biasVector = new Vector(numberOfNeurons);
    lastBiasUpdateVector = new Vector(biasVector.getRowDimension());
View Full Code Here

    initializeVector(biasVector, lowerLimitForWeights, upperLimitForWeights);
  }

  public Vector feedForward(Vector inputVector) {
    lastInput = inputVector;
    Matrix inducedField = weightMatrix.times(inputVector).plus(biasVector);

    Vector inducedFieldVector = new Vector(numberOfNeurons());
    for (int i = 0; i < numberOfNeurons(); i++) {
      inducedFieldVector.setValue(i, inducedField.get(i, 0));
    }

    lastInducedField = inducedFieldVector.copyVector();
    Vector resultVector = new Vector(numberOfNeurons());
    for (int i = 0; i < numberOfNeurons(); i++) {
View Full Code Here

  public void updateWeights() {
    weightMatrix.plusEquals(lastWeightUpdateMatrix);
  }

  public void updateBiases() {
    Matrix biasMatrix = biasVector.plusEquals(lastBiasUpdateVector);
    Vector result = new Vector(biasMatrix.getRowDimension());
    for (int i = 0; i < biasMatrix.getRowDimension(); i++) {
      result.setValue(i, biasMatrix.get(i, 0));
    }
    biasVector = result;
  }
View Full Code Here

    lastInput = input;
    return layer.feedForward(input);
  }

  public void processError(Vector error) {
    Matrix weightUpdate = error.times(lastInput.transpose());
    layer.acceptNewWeightUpdate(weightUpdate);

    Vector biasUpdate = layer.getBiasVector().plus(error);
    layer.acceptNewBiasUpdate(biasUpdate);
View Full Code Here

TOP

Related Classes of aima.core.util.math.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.