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

📄 neuron.java

📁 bp神经网络的java程序
💻 JAVA
字号:
package structure;
/**
 * 一个神经元
 * */
public class Neuron {
	public double   bias;             //偏置值
	public double   output;           //该神经元计算的输出值
	public double   dweight[];        //上一次权重调整的值
	public double   weight[];         //每个输入的权重
	public Function func;             //传输函数
	public double   err=0;            //误差
	/**
	 * 随机初始化神经元权重<p>
	 * @param num 是与该神经元相连的上一层的输出的数目
	 *(简单起见就是上一层的神经元数目)
	 * */
	Neuron(int num,Function func){
		weight   =new double[num];
		dweight  =new double[num];
		this.func=func;
		init();
	}
	/**
	 * 由参数初始化神经元权重<p>
	 * @param layers 第几层的神经元
	 * @param n  该层的第几个神经元(不包括输入层)
	 * */
	Neuron(int num,Function func,int layer,int n){
		weight   =new double[num];
		this.func=func;
		init(layer,n);
	}
	
    /**
     * 对一个神经元初始化
     * */	
	private void init(){
		//double r;
		RandomNum ran =RandomNum.getInstance();
		Parameter para=Parameter.getInstance();
		ran.setLimit(para.weightUp,para.weightDown);
	    for(int i=0;i<weight.length;i++){
	    	weight[i]=ran.getDouble();
		    //System.out.println("w="+weight[i]);
	    }
	    bias=ran.getDouble();
	}
	private void init(int layer,int n){
		Parameter para=Parameter.getInstance();
	    for(int i=0;i<weight.length;i++){
	    	weight[i]=para.weights[layer][n][i];
		    System.out.println("w="+weight[i]);
	    }
	    bias=para.bias[layer][n];
	}
	/**
	 * 设置权重值
	 * */
	void setWeight(double weight[]){
		this.weight=weight;
	}
	/**
	 * 计算结果
	 * */
	public double compute(double input[]){
		double result=0;
		for(int i=0;i<input.length;i++){
			result+=input[i]*weight[i];
		}
		result+=bias;
		output=func.getVal(result);
		return output;
		
	}
	/**
	 * 神经元计算的输出值
	 * */
	public double getOutput(){
		return output;
	}
	
}

⌨️ 快捷键说明

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