Esempio n. 1
0
 /// <summary>
 /// Returns a boolean value indicating whether to keep optimizing.
 /// <para>Used for optimization routines with early stopping.</para>
 /// </summary>
 /// <returns>Boolean</returns>
 public virtual bool Update(OptimizerProperties properties)
 {
     return(properties.Iteration <= properties.MaxIterations ||
            (properties.Iteration > 1 ?
             properties.Cost < (properties.CostHistory[properties.Iteration - 1] - properties.MinimizationConstant)
             : true));
 }
Esempio n. 2
0
 /// <summary>
 /// Returns a boolean value indicating whether to keep optimizing.
 /// <para>Used for optimization routines with early stopping.</para>
 /// </summary>
 /// <returns>Boolean</returns>
 public virtual bool Update(OptimizerProperties properties)
 {
     return (properties.Iteration <= properties.MaxIterations ||
         (properties.Iteration > 1 ?
             properties.Cost < (properties.CostHistory[properties.Iteration - 1] - properties.MinimizationConstant)
             : true));
 }
Esempio n. 3
0
 /// <summary>
 ///   Update and return the new Theta value.
 /// </summary>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns></returns>
 public override Vector UpdateTheta(OptimizerProperties properties)
 {
     if (properties.Cost > properties.CostHistory.Last())
     {
         properties.LearningRate *= 0.9;
         return(properties.Theta);
     }
     return(properties.Theta - properties.LearningRate * properties.Gradient);
 }
 /// <summary>
 /// Update and return the new Theta value.
 /// </summary>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns></returns>
 public override Vector UpdateTheta(OptimizerProperties properties)
 {
     if (properties.Cost > properties.CostHistory.Last())
     {
         properties.LearningRate *= 0.9;
         return properties.Theta;
     }
     else
     {
         return properties.Theta - properties.LearningRate * properties.Gradient;
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Update and return the new Theta value.
        /// </summary>
        /// <param name="properties">Properties for the optimization routine.</param>
        /// <returns></returns>
        public override Vector UpdateTheta(OptimizerProperties properties)
        {
            Vector v = (this.Momentum * properties.Theta) - (properties.LearningRate * properties.Gradient);

            return(properties.Theta + this.Momentum * v - properties.LearningRate * properties.Gradient);
        }
Esempio n. 6
0
        /// <summary>
        ///   Update and return the new Theta value.
        /// </summary>
        /// <param name="properties">Properties for the optimization routine.</param>
        /// <returns></returns>
        public override Vector UpdateTheta(OptimizerProperties properties)
        {
            var v = Momentum * properties.Theta - properties.LearningRate * properties.Gradient;

            return(properties.Theta + Momentum * v - properties.LearningRate * properties.Gradient);
        }
Esempio n. 7
0
 /// <summary>
 /// Update and return the new Theta value.
 /// </summary>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns></returns>
 public abstract Vector UpdateTheta(OptimizerProperties properties);
Esempio n. 8
0
 /// <summary>
 /// Update and return the Gradient.
 /// </summary>
 /// <param name="costFunction">The cost function to optimize.</param>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns>Vector</returns>
 public virtual Vector UpdateGradient(ICostFunction costFunction, OptimizerProperties properties)
 {
     return costFunction.ComputeGradient(properties.Theta);
 }
Esempio n. 9
0
 /// <summary>
 /// Update and return the Cost.
 /// </summary>
 /// <param name="costFunction">The cost function to optimize.</param>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns>Double</returns>
 public virtual double UpdateCost(ICostFunction costFunction, OptimizerProperties properties)
 {
     return costFunction.ComputeCost(properties.Theta);
 }
Esempio n. 10
0
 /// <summary>
 /// Update and return the new Theta value.
 /// </summary>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns></returns>
 public abstract Vector UpdateTheta(OptimizerProperties properties);
Esempio n. 11
0
 /// <summary>
 /// Update and return the Gradient.
 /// </summary>
 /// <param name="costFunction">The cost function to optimize.</param>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns>Vector</returns>
 public virtual Vector UpdateGradient(ICostFunction costFunction, OptimizerProperties properties)
 {
     return(costFunction.ComputeGradient(properties.Theta));
 }
Esempio n. 12
0
 /// <summary>
 /// Update and return the Cost.
 /// </summary>
 /// <param name="costFunction">The cost function to optimize.</param>
 /// <param name="properties">Properties for the optimization routine.</param>
 /// <returns>Double</returns>
 public virtual double UpdateCost(ICostFunction costFunction, OptimizerProperties properties)
 {
     return(costFunction.ComputeCost(properties.Theta));
 }