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

📄 simpleperceptronapplet.java

📁 This applet illustrates the prediction capabilities of the multi-layer perceptrons. It allows to def
💻 JAVA
字号:
import java.applet.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimplePerceptronApplet extends Applet{    FunctionCanvas   functionCanvas;    Perceptron       perceptron;    Choice           functionChoice;    TextField        iterationsTF;    TextField        learningRateTF;    TextField        momentumTF;    TextField        hiddenTF[] = new TextField[3];    TextField        input;    TextField        output;    TextField        delay;    TextField        delta;    Label            counter, totalIterations;    Panel            topPanel,controls1,controls2,parameters;    ErrorGraph       errorGraph;    int              n_in,n_out;    public SimplePerceptronApplet()    {    }    public void init()    {	setLayout(new BorderLayout());	topPanel = new Panel();	topPanel.setLayout(new BorderLayout());	controls1 = new Panel();	controls2 = new Panel();	Button init = new Button("Init");	ActionListener initListener = new ActionListener() {	    public void actionPerformed(ActionEvent e) {		initGraph();		initPerceptron();		functionCanvas.setPoints();		totalIterations.setText("    0");		functionCanvas.repaint();		if (errorGraph!=null) errorGraph.graph.clear();	    }	};	init.addActionListener(initListener);	controls1.add("North",init);	Button learn = new Button("Learn");	ActionListener learnListener = new ActionListener() {	    public void actionPerformed(ActionEvent e) {		learnPoints();	    }	};	learn.addActionListener(learnListener);	controls1.add("North",learn);	functionChoice = new Choice();	ItemListener functionChoiceListener = new ItemListener() {	    public void itemStateChanged(ItemEvent e) {		String item = (String)e.getItem();		if (item.equals("Cosinus")) {		    functionCanvas.setFunction(FunctionCanvas.COSINUS);		    initGraph();		    functionCanvas.setPoints();		    functionCanvas.repaint();		}		else if (item.equals("Sinus")) {		    functionCanvas.setFunction(FunctionCanvas.SINUS);		    initGraph();		    functionCanvas.setPoints();		    functionCanvas.repaint();		}		else if (item.equals("Complex")) {		    functionCanvas.setFunction(FunctionCanvas.COMPLEX);		    initGraph();		    functionCanvas.setPoints();		    functionCanvas.repaint();		}		else if (item.equals("Chaos")) {		    functionCanvas.setFunction(FunctionCanvas.CHAOS);		    initGraph();		    functionCanvas.setPoints();		    functionCanvas.repaint();		}	    }	};	functionChoice.addItem("Cosinus");	functionChoice.addItem("Sinus");	functionChoice.addItem("Complex");	functionChoice.addItem("Chaos");	functionChoice.addItemListener(functionChoiceListener);	controls1.add("North",functionChoice);    	controls1.add("North",new Label("H1:"));	hiddenTF[0] = new TextField("1",3);	controls1.add("North",hiddenTF[0]);	controls1.add("North",new Label("H2:"));	hiddenTF[1] = new TextField("",3);	controls1.add("North",hiddenTF[1]);	controls1.add("North",new Label("H3:"));	hiddenTF[2] = new TextField("",3);	controls1.add("North",hiddenTF[2]);	input  = new TextField("2",3);	output = new TextField("1",3);	delta  = new TextField("0.2",4);	delay  = new TextField("0.1",4);	controls2.add("South",new Label("inputs:"));	controls2.add("South",input);	controls2.add("South",new Label("outputs:"));	controls2.add("South",output);	controls2.add("South",new Label("delta:"));	controls2.add("South",delta);	controls2.add("South",new Label("delay:"));	controls2.add("South",delay);	topPanel.add("North",controls1);	topPanel.add("Center",controls2);	add("North",topPanel);	parameters = new Panel();	parameters.add(new Label("Momentum:"));	momentumTF = new TextField(String.valueOf(Neuron.momentum),4);	parameters.add(momentumTF);	parameters.add(new Label("Learning rate:"));	learningRateTF = new TextField(String.valueOf(Neuron.learningRate),4);	parameters.add(learningRateTF);	parameters.add(new Label("Iterations:"));	iterationsTF = new TextField("10",4);	parameters.add(iterationsTF);	counter = new Label("0   ");	parameters.add(counter);	add("South",parameters);	totalIterations = new Label ("    0");	parameters.add(new Label ("Total It.:"));	parameters.add (totalIterations);	functionCanvas = new FunctionCanvas();	add("Center",functionCanvas);	initGraph();	initPerceptron();	errorGraph = new ErrorGraph(this);    }    public void initGraph()    {	double dt,dl;	String text;	text = input.getText();	n_in = (Integer.valueOf(text)).intValue();	text = output.getText();	n_out = (Integer.valueOf(text)).intValue();	text = delta.getText();	dt = (Double.valueOf(text)).doubleValue();	text = delay.getText();	dl = (Double.valueOf(text)).doubleValue();	functionCanvas.setParameters(n_in,n_out,dl,dt);    }    public void initPerceptron()    {	int hid[] = new int[3];	int nLayer,i,j,k;	String text;	perceptron = new Perceptron(n_in,n_out);	nLayer=0;	for(i=0;i<3;i++)	    {		text = hiddenTF[i].getText();		if ("".equals(text)) hid[i]=0;		else hid[i] = (Integer.valueOf(text)).intValue();		if (hid[i]!=0)		    {			String s = "H" + String.valueOf(i) + "|";			perceptron.addLayer(hid[i],s);			nLayer++;		    }	    }	for(j=0;j<nLayer;j++)	    for(i=0;i<hid[j];i++) perceptron.biasConnect(j+1,i);	perceptron.biasConnect(nLayer+1,0); // for the output	if (nLayer==0)	    for(i=0;i<n_in;i++) for(j=0;j<n_out;j++)		perceptron.connect(0,i,1,j);	else	    {		// connect the inputs to the first hidden layer		for(i=0;i<hid[0];i++) for(j=0;j<n_in;j++)		    perceptron.connect(0,j,1,i);		// connect the hidden layers together		for(k=0;k<nLayer-1;k++) for(i=0;i<hid[k];i++) for(j=0;j<hid[k+1];j++)		    perceptron.connect(k+1,i,k+2,j);		// connect the last hidden layer to the output		for(i=0;i<hid[nLayer-1];i++) for(j=0;j<n_out;j++)		    perceptron.connect(nLayer,i,nLayer+1,j);	    }	functionCanvas.setPerceptron(perceptron);    }    public void learnPoints()    {	functionCanvas.setSamples();	Integer iterations = Integer.valueOf(iterationsTF.getText());	Double learningRate = Double.valueOf(learningRateTF.getText());	Neuron.learningRate = learningRate.doubleValue();	disableDuringLearning ();	int max = iterations.intValue();	counter.setEnabled(true);	for(int i = 0;i < max; i++)	    {		perceptron.learn(1);		if (i%10==0)		    {			counter.setText(String.valueOf(max - i));			counter.repaint(); // not so bad			if (errorGraph==null) errorGraph = new ErrorGraph(this);			errorGraph.graph.add(10,perceptron.currentError());		    }		perceptron.test();		if (i%10==0)		    {			errorGraph.graph.add2(10,perceptron.currentError());		    }	    }	counter.setText("0   ");	totalIterations.setText(String.valueOf((int)max					       +getFieldAsInt(totalIterations)					       ));	drawSpace();	enableDuringLearning();	if (errorGraph!=null) errorGraph.show();    }    public void setSamples()    {	Vector input;	Vector output;	perceptron.removeSamples();    	Enumeration e = functionCanvas.input.elements();	while(e.hasMoreElements())	    {		output = new Vector();		output.addElement(new Double(0.0));		input  = new Vector();		input.addElement((Double)e.nextElement());		input.addElement((Double)e.nextElement());		perceptron.addSample(input,output);	    }	e = functionCanvas.output.elements();	while(e.hasMoreElements())	    {		output = new Vector();		output.addElement(new Double(1.0));		input  = new Vector();		input.addElement((Double)e.nextElement());		input.addElement((Double)e.nextElement());		perceptron.addSample(input,output);	    }    }    public void drawSpace()    {	functionCanvas.repaint();    }    /**     * Disables the text fields and controls during training.     */    public void disableDuringLearning() {	parameters.setEnabled(false);	topPanel.setEnabled(false);    }    /**     * Enables the text fields.     */    public void enableDuringLearning() {	parameters.setEnabled(true);	topPanel.setEnabled(true);    }    /**     * Return the contents of a textfield as an int.     * @param TextField t - the textfield component.     * @return int.     * @exception NumberFormatException.     */    public int getFieldAsInt(Label t) {	try {	    return (Integer.valueOf(t.getText())).intValue();	}	catch (NumberFormatException e) {	    t.setText("    0");	    return 0;	}    }    public void graphClose () {	errorGraph.dispose();	errorGraph = null;    }}

⌨️ 快捷键说明

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