Package cc.mallet.classify

Source Code of cc.mallet.classify.MaxEntL1Trainer

package cc.mallet.classify;

import cc.mallet.optimize.Optimizer;
import cc.mallet.optimize.OrthantWiseLimitedMemoryBFGS;
import cc.mallet.types.InstanceList;

public class MaxEntL1Trainer extends MaxEntTrainer {
  private static final long serialVersionUID = 1L;

  double l1Weight = 1.0;

  public MaxEntL1Trainer() {
    super(Double.MAX_VALUE);
  }

  public MaxEntL1Trainer(double l1wt) {
    super(Double.MAX_VALUE);
    this.l1Weight = l1wt;
  }

  public MaxEntL1Trainer(MaxEnt initClassifier) {
    super(initClassifier);
    this.gaussianPriorVariance = Double.MAX_VALUE;
  }

  public Optimizer getOptimizer() {
    if (optimizer == null && optimizable != null)
      optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight);
    return optimizer;
  }

  // commented by Limin Yao, use L1 regularization instead
  public Optimizer getOptimizer(InstanceList trainingSet) {
    if (trainingSet != this.trainingSet || optimizable == null) {
      getOptimizable(trainingSet);
      optimizer = null;
    }
    if (optimizer == null)
      optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight);
    return optimizer;
  }
}
TOP

Related Classes of cc.mallet.classify.MaxEntL1Trainer

TOP
Copyright © 2018 www.massapi.com. 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.