?? bptest.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 + -