Package org.neuroph.core

Source Code of org.neuroph.core.Weight

/**
* Copyright 2010 Neuroph Project http://neuroph.sourceforge.net
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.neuroph.core;

import org.neuroph.core.learning.TrainingData;

/**
* Neuron connection weight.
*
* @see Connection
* @author Zoran Sevarac <sevarac@gmail.com>
*/
public class Weight implements java.io.Serializable {
  /**
   * The class fingerprint that is set to indicate serialization
   * compatibility with a previous version of the class
   */ 
  private static final long serialVersionUID = 1L;


        /**
         * Training data buffer holds various algorithm specific data which is
         * used for adjusting this weight value during training
         */
        private /*transient*/ TrainingData trainingData;
 
  /**
   * Weight value
   */
  private double value;
 

  /**
   * Creates an instance of connection weight with random weight value in range [0..1]
   */
  public Weight() {
    this.value = Math.random() - 0.5d;
                this.trainingData = new TrainingData(2);
  }

  /**
   * Creates an instance of connection weight with the specified weight value
   *
   * @param value
   *            weight value
   */
  public Weight(double value) {
    this.value = value;
                 this.trainingData = new TrainingData(2);
  }

        /**
         * Initialize training data buffer to specified size
         * @param size size of the training buffer (number of variables used by
         * the learning rule)
         */
        public void initTrainingDataBuffer(int size) {
            this.trainingData = new TrainingData(size);
        }

  /**
   * Increases the weight for the specified amount
   *
   * @param amount
   *            amount to add to current weight value
   */
  public void inc(double amount) {
    this.value += amount;
  }

  /**
   * Decreases the weight for specified amount
   *
   * @param amount
   *            amount to subtract from the current weight value
   */
  public void dec(double amount) {
    this.value -= amount;
  }

  /**
   * Sets the weight value
   *
   * @param value
   *            weight value to set
   */
  public void setValue(double value) {
    this.value = value;
  }

  /**
   * Returns weight value
   *
   * @return value of this weight
   */
  public double getValue() {
    return this.value;
  }
 
  /**
   * Returns weight value as String
   */
  @Override
  public String toString() {
    return Double.valueOf(value).toString();
  }

  /**
   * Sets random weight value
   */
  public void randomize() {
    this.value = Math.random() - 0.5d;
                //this.previousValue = this.value;
                this.trainingData.set(TrainingData.PREVIOUS_WEIGHT, this.value); // used for momentum
  }

  /**
   * Sets random weight value within specified interval
   */
  public void randomize(double min, double max) {
    this.value = min + Math.random() * (max - min);
               //this.previousValue = this.value;
                this.trainingData.set(TrainingData.PREVIOUS_WEIGHT, this.value); // used for momentum
  }


        /**
         * Returns training data buffer for this weight
         * @return training data buffer for this weight
         */
        public TrainingData getTrainingData() {
            return trainingData;
        }

}
TOP

Related Classes of org.neuroph.core.Weight

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.