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

📄 bptest.java

📁 问使用java程序实现bp算法的问题!!我想对大家是有用的请看看
💻 JAVA
字号:
package bp;

import java.util.ArrayList;
import java.util.StringTokenizer;

public class BpTest implements Runnable {
	private Net net;

	private Thread thread;

	private boolean stop = true;

	public BpTest() {
		thread = new Thread(this);
	}

	private void initializeNet() {
		double defaultWeightValue = 0.5;
		double learningRate = 0.7;

		// Specify Net's Layers
		////////////////////////////////////////////////////////////////////////////////////
		Layer inputLayer = new Layer(3, null, defaultWeightValue, 0);
		Layer hiddenLayer = new Layer(5, inputLayer, defaultWeightValue,
				Neuron.BINARY_SIGMOID_ACTIVATION);
		Layer outputLayer = new Layer(2, hiddenLayer, defaultWeightValue,
				Neuron.LINEAR_ACTIVATION);

		Layer[] layers = new Layer[] { inputLayer, hiddenLayer, outputLayer };
		////////////////////////////////////////////////////////////////////////////////////
		// Initialize net with layers[]
		net = new Net(layers, learningRate);

		for (int i = 0; i < layers.length; ++i)
			{System.out.println(" : " + layers[i].getNoOfNeurons());
			}
		// System.out.println(" "+net.toString());
	}
	public void resetNet(){
        if (stop) {
            net = null;
            initializeNet();
        }
	}
	public void startTraining(){
        if (thread == null)
            thread = new Thread(this);
        thread.start();
    }
    
    public void stopTraining(){
        stop = true;
    }
    
    public boolean isTraining(){
        return !stop;
    }
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BpTest test=new BpTest();
		test.startTraining();
		//System.out.println("trainging:");
		// TODO 自动生成方法存根

	}

	public void run() {

        if (net == null)
            initializeNet();
        stop = false;
               
         Pattern pattern = null;
      //   double[][] train_in={{1,2,3},{3,2,5},{4,6,2}};
      //   double[][] train_desired={{1,2},{3,2},{4,1}};	 
         double[] desired;
         double[] input;
        // input=train_in[0];
        // desired=train_desired[0];
         //ArrayList patterns = new ArrayList();
         boolean readError = false;
         /*StringTokenizer tokenizer = new StringTokenizer("ni has  sd", " :\n", false);
         while (readError == false){     
             try{
                ///////////////////////////////////////////////////////////////////
                desired = new double[2];  //add desired values: 
                String token = tokenizer.nextToken();
                           
             } 
             catch (Exception e){
                 readError = true;
             }
         } */
            
            
    /*     Pattern[] trainingSet = new Pattern[patterns.size()];
         for (int i = 0; i < patterns.size(); ++i) {
             trainingSet[i] = (Pattern) (patterns.get (i));
         }
   */    
            double[][] train_in={{1,2,3},{2,3,5},{14,3,11},{9,6,12},{4,5,11},{16,13,7}};
            double[][] train_desired={{5,1},{11,2},{6,3},{7,2},{13,4},{10,1}};	
         Pattern[] trainingSet = new Pattern[6];
         for (int i = 0; i < 6; ++i) {
             //trainingSet[i] = (Pattern) (patterns));
        	 trainingSet[i]=(Pattern) (new Pattern(train_in[i],train_desired[i]) );
             System.out.println("patten value are:"+trainingSet[i].toString());
         }
         int maxErrCount = 0;        
         double epochErr = Double.MAX_VALUE;
         double maxError=0.01;
         do{
             epochErr = net.trainEpoch (trainingSet);                
            } while (epochErr > maxError && stop == false);
          stop = true;
          thread = null;
          System.out.println("");
          System.out.println("trainging over:");
          System.out.println(" "+net.toString());
          double[] in={1,2,3};
         double[] out=net.testPattern(in);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
         double[] in1={14,3,11};
          out=net.testPattern(in1);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
         double [] in3={4,6,2};
         out=net.testPattern(in3);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
         double [] in2={0,0,0};
         out=net.testPattern(in2);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
         
         double [] in4={6,8,9};
         out=net.testPattern(in4);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
         
         double [] in5={5,3,12};
         out=net.testPattern(in5);
         System.out.println("out is:"+out[0]);
         System.out.println("out is:"+out[1]);
                 	}

}

⌨️ 快捷键说明

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