public GradientMachine copy() { close(); GradientMachine r = new GradientMachine(numFeatures(), numHidden(), numCategories()); r.copyFrom(this); return r; }
@Override public void train(long trackingKey, String groupKey, int actual, Vector instance) { Vector hiddenActivation = inputToHidden(instance); hiddenToOutput(hiddenActivation); Collection<Integer> goodLabels = Sets.newHashSet(); goodLabels.add(actual); updateRanking(hiddenActivation, goodLabels, 2, rnd); }
@Override public void train(long trackingKey, int actual, Vector instance) { train(trackingKey, null, actual, instance); }
@Override public Vector classifyNoLink(Vector instance) { DenseVector hidden = inputToHidden(instance); return hiddenToOutput(hidden); }
@Test public void testGradientmachine() throws IOException { Vector target = readStandardData(); GradientMachine grad = new GradientMachine(8,4,2).learningRate(0.1).regularization(0.01); Random gen = RandomUtils.getRandom(); grad.initWeights(gen); train(getInput(), target, grad); // TODO not sure why the RNG change made this fail. Value is 0.5-1.0 no matter what seed is chosen? test(getInput(), target, grad, 1.0, 1); //test(getInput(), target, grad, 0.05, 1); }
@Override public double classifyScalar(Vector instance) { Vector output = classifyNoLink(instance); if (output.get(0) > output.get(1)) { return 0; } return 1; }
@Override public Vector classifyNoLink(Vector instance) { DenseVector hidden = inputToHidden(instance); return hiddenToOutput(hidden); }
@Override public double classifyScalar(Vector instance) { Vector output = classifyNoLink(instance); if (output.get(0) > output.get(1)) { return 0; } return 1; }
public GradientMachine copy() { close(); GradientMachine r = new GradientMachine(numFeatures(), numHidden(), numCategories()); r.copyFrom(this); return r; }
@Override public void train(long trackingKey, String groupKey, int actual, Vector instance) { Vector hiddenActivation = inputToHidden(instance); hiddenToOutput(hiddenActivation); Collection<Integer> goodLabels = Sets.newHashSet(); goodLabels.add(actual); updateRanking(hiddenActivation, goodLabels, 2, rnd); }
@Override public Vector classifyNoLink(Vector instance) { DenseVector hidden = inputToHidden(instance); return hiddenToOutput(hidden); }
@Override public double classifyScalar(Vector instance) { Vector output = classifyNoLink(instance); if (output.get(0) > output.get(1)) { return 0; } return 1; }
@Override public void train(int actual, Vector instance) { train(0, null, actual, instance); }
public GradientMachine copy() { close(); GradientMachine r = new GradientMachine(numFeatures(), numHidden(), numCategories()); r.copyFrom(this); return r; }
@Override public void train(long trackingKey, String groupKey, int actual, Vector instance) { Vector hiddenActivation = inputToHidden(instance); hiddenToOutput(hiddenActivation); Collection<Integer> goodLabels = new HashSet<>(); goodLabels.add(actual); updateRanking(hiddenActivation, goodLabels, 2, rnd); }
@Override public Vector classify(Vector instance) { Vector result = classifyNoLink(instance); // Find the max value's index. int max = result.maxValueIndex(); result.assign(0); result.setQuick(max, 1.0); return result.viewPart(1, result.size() - 1); }
@Override public void train(long trackingKey, int actual, Vector instance) { train(trackingKey, null, actual, instance); }
@Override public Vector classify(Vector instance) { Vector result = classifyNoLink(instance); // Find the max value's index. int max = result.maxValueIndex(); result.assign(0); result.setQuick(max, 1.0); return result.viewPart(1, result.size() - 1); }
@Override public void train(int actual, Vector instance) { train(0, null, actual, instance); }
@Override public Vector classify(Vector instance) { Vector result = classifyNoLink(instance); // Find the max value's index. int max = result.maxValueIndex(); result.assign(0); result.setQuick(max, 1.0); return result.viewPart(1, result.size() - 1); }