⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kohonenneuron.java

📁 Kohonen network nural, framework for java developer
💻 JAVA
字号:
/*** Copyright (c) 2006, Seweryn Habdank-Wojewodzki* Copyright (c) 2006, Janusz Rybarski** All rights reserved.* * Redistribution and use in source and binary forms,* with or without modification, are permitted provided* that the following conditions are met:** Redistributions of source code must retain the above* copyright notice, this list of conditions and the* following disclaimer.** Redistributions in binary form must reproduce the* above copyright notice, this list of conditions* and the following disclaimer in the documentation* and/or other materials provided with the distribution.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS* AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED* OF THE POSSIBILITY OF SUCH DAMAGE.*/package network;import activationFunction.ActivationFunctionModel;import java.util.Random;import metrics.MetricModel;import activationFunction.*;import metrics.*;/** * Class representing <B>neuron</B> with bias and specyfied  * activation function *  * @author Janusz Rybarski * e-mail: janusz.rybarski AT ae DOT krakow DOT pl * @author Seweryn Habdank-Wojewdzki * e-mail: habdank AT megapolis DOT pl * @version 1.0 2006/07/09 * @see ActivationFunctionModel */public class KohonenNeuron implements NeuronModel{        /**     * array of the weight     */    private double[] weight;    /**     * activation function     */    private ActivationFunctionModel activationFunction;        /**     * calculates distance beetwen input vector and neurons weigths    */        private MetricModel distanceFunction;        /**     * Creates new neuron with specyfied numbers of weight.      * Value of the weight is random where max value is definited by maxWeight.     * Activation function is definied by activationFunction parameter.     * @param weightNumber numbers of weight     * @param maxWeight max value of the weight     * @param activationFunction activation function     */    public KohonenNeuron(int weightNumber, double[] maxWeight, ActivationFunctionModel activationFunction){        if(weightNumber == maxWeight.length){            Random rand = new Random();            weight = new double[weightNumber];            for(int i=0; i< weightNumber; i++){                weight[i] = rand.nextDouble() * maxWeight[i];            }        }        this.activationFunction = activationFunction;    }        /**     * Creates new neuron with weight specyfied by array and specified activation funciton.      * Numbers of weights are the same as length of the array.     * @param weightArray array of the weight     * @param activationFunction activation function     */    public KohonenNeuron(double[] weightArray,ActivationFunctionModel activationFunction) {        int weightSize = weightArray.length;        weight = new double[weightSize];        for(int i=0; i< weightSize; i++){            weight[i] = weightArray[i];        }        this.activationFunction = activationFunction;    }        /**     * Return array of neuron weigths     * @return array of neuron weigths     */    public double[] getWeight(){        return weight.clone();    }        /**     * Return value of the neuron after activation.     * if activation function is not set, function      * return sum of the multiplication of vector v_i     * and weight w_i for each i (numbers of weigth and     * lenght of the input vector)     * @param inputVector input vector for neuron     * @return return     */    public double getValue(double[] inputVector){        double value = 0;        int inputSize = inputVector.length;        if ( distanceFunction != null){            value = distanceFunction.getDistance(weight, inputVector);        }else{            for(int i=0; i< inputSize; i++){                value = value + inputVector[i] * weight[i];            }        }        if( activationFunction != null)            return activationFunction.getValue(value);        else            return value;    }        /**     * Set weigths from array as parameter     * @param weight array of the weights     */    public void setWeight(double[] weight){        for (int i=0; i< weight.length; i++){            this.weight[i] = weight[i];        }    }        /**     * Returns a string representation of the NeuronModel.     * NeuronModel is describe by its weights [w_1,w_2,...]     *      * @return a string representation of the NeuronModel     */    public String toString(){        String text="";        text += "[ ";        int weightSize = weight.length;        for (int i=0; i< weightSize; i++){            text += weight[i];            if(i < weightSize -1 ){                text += ", ";            }        }        text += " ]";        return text;    }    /**     * Return reference to distance function     * @return reference to distance function     */    public MetricModel getDistanceFunction() {        return distanceFunction;    }    /**     * Set distance function     * @param distanceFunction reference to distance function     */    public void setDistanceFunction(MetricModel distanceFunction) {        this.distanceFunction = distanceFunction;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -