📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace homework1
{
public partial class Form1 : Form
{
private NN network;
private ArrayList inputs,fileTrain,fileTest;
public Form1()
{
InitializeComponent();
network = new NN(4);
inputs = new ArrayList();
fileTrain = new ArrayList();
fileTest = new ArrayList();
}
private void Form1_Load(object sender, EventArgs e)
{
inputVector newInput = new inputVector();
newInput.set(1,1,1);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(0, 2, 1);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(3, 1, 1);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(2, -1, 2);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(2, 0, 2);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(1, -2, 2);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-1, 2, 3);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-2, 1, 3);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-1, 1, 3);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-1, -1, 4);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-2, -2, 4);
inputs.Add(newInput);
newInput = new inputVector();
newInput.set(-3, -2, 4);
inputs.Add(newInput);
}
private void button1_Click(object sender, EventArgs e)
{
network.train(ref inputs);
string tempStr = "";
network.show(ref tempStr);
showResult.Clear();
showResult.AppendText(tempStr);
}
private void button2_Click(object sender, EventArgs e)
{
showResult.Clear();
foreach(inputVector example in inputs)
{
inputVector tempVec = new inputVector(example.x,example.y,example.result);
int ret = network.perdicted(ref tempVec);
showResult.AppendText("in fact: "+example.result.ToString()+" perdicted: "+ret.ToString()+"\t\n");
}
}
private void setTrainRate_Click(object sender, EventArgs e)
{
double tempRate = Convert.ToDouble(rateBox.Text);
network.reset();
network.setRate(tempRate);
MessageBox.Show("ok");
}
private void writeToOut(ref StreamWriter st,ref double[] data)
{
for (int i = 0; i < 600;i++ )
{
st.WriteLine(data[i]);
}
}
private void button3_Click(object sender, EventArgs e)
{
StreamWriter st = new StreamWriter("outfile.txt");
double[] p1, p2, p3, p4;
p1 = new double[600];
p2 = new double[600];
p3 = new double[600];
p4 = new double[600];
int under = 0;
double tempR;
double num1 = 0;
double num2 = 0;
double num3 = 0;
double num4 = 0;
for (int kk = 0; kk < 100;kk++ )
{
under = 0;
for (int i = 300; i > -300; i--)
{
tempR = (double)i / 100;
tempR = Math.Pow(10, tempR);
network.reset();
network.randomSetInitW();
network.setRate(tempR);
network.train(ref inputs);
network.getREN(ref num1, ref num2, ref num3, ref num4);
p1[under] += num1;
p2[under] += num2;
p3[under] += num3;
p4[under] += num4;
under++;
}
}
for (int i = 0; i < 600;i++ )
{
p1[i] /= 100;
p2[i] /= 100;
p3[i] /= 100;
p4[i] /= 100;
}
writeToOut(ref st, ref p1);
st.WriteLine("##########################");
writeToOut(ref st, ref p2);
st.WriteLine("##########################");
writeToOut(ref st, ref p3);
st.WriteLine("##########################");
writeToOut(ref st, ref p4);
st.WriteLine("##########################");
st.Close();
MessageBox.Show("OK!");
}
private void button4_Click(object sender, EventArgs e)
{
fileTrain.Clear();
StreamReader sr = new StreamReader("two_spiral_train.txt");
double a, b;
int lab;
string trainSets = "";
trainSets = sr.ReadToEnd();
sr.Close();
inputVector newInput;
while (trainSets != "")
{
a = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
trainSets = trainSets.Substring(trainSets.IndexOf('\t')+1);
b = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
trainSets = trainSets.Substring(trainSets.IndexOf('\t')+1);
lab = int.Parse(trainSets.Substring(0, trainSets.IndexOf('\r')));
trainSets = trainSets.Substring(trainSets.IndexOf('\n')+1);
newInput = new inputVector(a, b, lab);
fileTrain.Add(newInput);
}
MessageBox.Show("ok");
}
private void button6_Click(object sender, EventArgs e)
{
network.train(ref fileTrain);
string tempStr = "";
network.show(ref tempStr);
showResult.Clear();
showResult.AppendText(tempStr);
}
private void button5_Click(object sender, EventArgs e)
{
fileTest.Clear();
StreamReader sr = new StreamReader("two_spiral_test.txt");
double a, b;
int lab;
string trainSets = "";
trainSets = sr.ReadToEnd();
sr.Close();
inputVector newInput;
while (trainSets != "")
{
a = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
trainSets = trainSets.Substring(trainSets.IndexOf('\t') + 1);
b = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
trainSets = trainSets.Substring(trainSets.IndexOf('\t') + 1);
lab = int.Parse(trainSets.Substring(0, trainSets.IndexOf('\r')));
trainSets = trainSets.Substring(trainSets.IndexOf('\n') + 1);
newInput = new inputVector(a, b, lab);
fileTest.Add(newInput);
}
MessageBox.Show("ok");
}
private void button7_Click(object sender, EventArgs e)
{
showResult.Clear();
foreach (inputVector example in fileTest)
{
inputVector tempVec = new inputVector(example.x, example.y, example.result);
int ret = network.perdicted(ref tempVec);
showResult.AppendText("in fact: " + example.result.ToString() + " perdicted: " + ret.ToString() + "\t\n");
}
}
private void button8_Click(object sender, EventArgs e)
{
int num = int.Parse(perNumber.Text);
network = new NN(num);
MessageBox.Show("ok");
}
private void button9_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter("data.txt");
foreach(inputVector exam in fileTrain)
{
if(exam.result==1)
{
sw.WriteLine(exam.x);
}
}
sw.WriteLine("xxxxxxxxxxxxxxx1111111111111111");
foreach (inputVector exam in fileTrain)
{
if (exam.result == 0)
{
sw.WriteLine(exam.x);
}
}
sw.WriteLine("xxxxxxxxxxxxxxx0000000000000000");
foreach (inputVector exam in fileTrain)
{
if (exam.result == 1)
{
sw.WriteLine(exam.y);
}
}
sw.WriteLine("yyyyyyyyyyyyyyy1111111111111111");
foreach (inputVector exam in fileTrain)
{
if (exam.result == 0)
{
sw.WriteLine(exam.y);
}
}
sw.WriteLine("yyyyyyyyyyyyyyy0000000000000000");
sw.Close();
MessageBox.Show("ok");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -