@Override protected CliquePotentialFunction getCliquePotentialFunctionForTest() { if (cliquePotentialFunction == null) { if (flags.secondOrderNonLinear) cliquePotentialFunction = new NonLinearSecondOrderCliquePotentialFunction(inputLayerWeights4Edge, outputLayerWeights4Edge, inputLayerWeights, outputLayerWeights, flags); else cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, inputLayerWeights, outputLayerWeights, flags); } return cliquePotentialFunction; }
double[] hiddenLayer = hiddenLayerOutput(inputLayerWeights, cliqueFeatures, flags, featureVal); int outputLayerSize = inputLayerWeights.length / outputLayerWeights[0].length;
public double[] hiddenLayerOutput(double[][] inputLayerWeights, int[] nodeCliqueFeatures, SeqClassifierFlags aFlag, double[] featureVal) { int layerOneSize = inputLayerWeights.length; if (layerOneCache == null || layerOneSize != layerOneCache.length) layerOneCache = new double[layerOneSize]; for (int i = 0; i < layerOneSize; i++) { double[] ws = inputLayerWeights[i]; double lOneW = 0; for (int m = 0; m < nodeCliqueFeatures.length; m++) { double dotProd = ws[nodeCliqueFeatures[m]]; if (featureVal != null) dotProd *= featureVal[m]; lOneW += dotProd; } layerOneCache[i] = lOneW; } if (!aFlag.useHiddenLayer) return layerOneCache; // transform layer one through hidden if (hiddenLayerCache == null || layerOneSize != hiddenLayerCache.length) hiddenLayerCache = new double[layerOneSize]; for (int i = 0; i < layerOneSize; i++) { if (aFlag.useSigmoid) { hiddenLayerCache[i] = sigmoid(layerOneCache[i]); } else { hiddenLayerCache[i] = Math.tanh(layerOneCache[i]); } } return hiddenLayerCache; }
NonLinearCliquePotentialFunction cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); if (featureVal3DArr != null) featureValArr = featureVal3DArr[i][j]; As = cliquePotentialFunction.hiddenLayerOutput(W, cliqueFeatures, flags, featureValArr); fDeriv = new double[inputLayerSize]; double fD = 0;
NonLinearCliquePotentialFunction cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); if (featureVal3DArr != null) featureValArr = featureVal3DArr[i][j]; As = cliquePotentialFunction.hiddenLayerOutput(W, cliqueFeatures, flags, featureValArr); fDeriv = new double[inputLayerSize]; double fD = 0;
NonLinearCliquePotentialFunction cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); if (featureVal3DArr != null) featureValArr = featureVal3DArr[i][j]; As = cliquePotentialFunction.hiddenLayerOutput(W, cliqueFeatures, flags, featureValArr); fDeriv = new double[inputLayerSize]; double fD = 0;
public CliquePotentialFunction getCliquePotentialFunction(double[] x) { Triple<double[][], double[][], double[][]> allParams = separateWeights(x); double[][] linearWeights = allParams.first(); double[][] W = allParams.second(); // inputLayerWeights double[][] U = allParams.third(); // outputLayerWeights return new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); }
public double[] hiddenLayerOutput(double[][] inputLayerWeights, int[] nodeCliqueFeatures, SeqClassifierFlags aFlag, double[] featureVal) { int layerOneSize = inputLayerWeights.length; if (layerOneCache == null || layerOneSize != layerOneCache.length) layerOneCache = new double[layerOneSize]; for (int i = 0; i < layerOneSize; i++) { double[] ws = inputLayerWeights[i]; double lOneW = 0; for (int m = 0; m < nodeCliqueFeatures.length; m++) { double dotProd = ws[nodeCliqueFeatures[m]]; if (featureVal != null) dotProd *= featureVal[m]; lOneW += dotProd; } layerOneCache[i] = lOneW; } if (!aFlag.useHiddenLayer) return layerOneCache; // transform layer one through hidden if (hiddenLayerCache == null || layerOneSize != hiddenLayerCache.length) hiddenLayerCache = new double[layerOneSize]; for (int i = 0; i < layerOneSize; i++) { if (aFlag.useSigmoid) { hiddenLayerCache[i] = sigmoid(layerOneCache[i]); } else { hiddenLayerCache[i] = Math.tanh(layerOneCache[i]); } } return hiddenLayerCache; }
double[] hiddenLayer = hiddenLayerOutput(inputLayerWeights, cliqueFeatures, flags, featureVal); int outputLayerSize = inputLayerWeights.length / outputLayerWeights[0].length;
@Override protected CliquePotentialFunction getCliquePotentialFunctionForTest() { if (cliquePotentialFunction == null) { if (flags.secondOrderNonLinear) cliquePotentialFunction = new NonLinearSecondOrderCliquePotentialFunction(inputLayerWeights4Edge, outputLayerWeights4Edge, inputLayerWeights, outputLayerWeights, flags); else cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, inputLayerWeights, outputLayerWeights, flags); } return cliquePotentialFunction; }
for (int i = 0; i < layerOneSize; i++) { if (aFlag.useSigmoid) { hiddenLayerCache[i] = sigmoid(layerOneCache[i]); } else { hiddenLayerCache[i] = Math.tanh(layerOneCache[i]);
double[] hiddenLayer = hiddenLayerOutput(inputLayerWeights, cliqueFeatures, flags, featureVal); int outputLayerSize = inputLayerWeights.length / outputLayerWeights[0].length;
@Override protected CliquePotentialFunction getCliquePotentialFunctionForTest() { if (cliquePotentialFunction == null) { if (flags.secondOrderNonLinear) cliquePotentialFunction = new NonLinearSecondOrderCliquePotentialFunction(inputLayerWeights4Edge, outputLayerWeights4Edge, inputLayerWeights, outputLayerWeights, flags); else cliquePotentialFunction = new NonLinearCliquePotentialFunction(linearWeights, inputLayerWeights, outputLayerWeights, flags); } return cliquePotentialFunction; }
public CliquePotentialFunction getCliquePotentialFunction(double[] x) { Triple<double[][], double[][], double[][]> allParams = separateWeights(x); double[][] linearWeights = allParams.first(); double[][] W = allParams.second(); // inputLayerWeights double[][] U = allParams.third(); // outputLayerWeights return new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); }
public CliquePotentialFunction getCliquePotentialFunction(double[] x) { Triple<double[][], double[][], double[][]> allParams = separateWeights(x); double[][] linearWeights = allParams.first(); double[][] W = allParams.second(); // inputLayerWeights double[][] U = allParams.third(); // outputLayerWeights return new NonLinearCliquePotentialFunction(linearWeights, W, U, flags); }