📄 program.cs
字号:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace BpNetp2
{
class Program
{
[STAThread]
static void Main(string[] args)
{
//0.1399,0.1467,0.1567,0.1595,0.1588,0.1622,0.1611,0.1615,0.1685,0.1789,0.1790
//double[,] p1 = new double[,] { { 0.05, 0.02 }, { 0.09, 0.11 }, { 0.12, 0.20 }, { 0.15, 0.22 }, { 0.20, 0.25 }, { 0.75, 0.75 }, { 0.80, 0.83 }, { 0.82, 0.80 }, { 0.90, 0.89 }, { 0.95, 0.89 }, { 0.09, 0.04 }, { 0.1, 0.1 }, { 0.14, 0.21 }, { 0.18, 0.24 }, { 0.22, 0.28 }, { 0.77, 0.78 }, { 0.79, 0.81 }, { 0.84, 0.82 }, { 0.94, 0.93 }, { 0.98, 0.99 } };
//double[,] t1 = new double[,] { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 } };
//double[,] p1 = new double[,] { { 0.1399, 0.1467, 0.1567, 0.1595, 0.1588, 0.1622 }, { 0.1467, 0.1567, 0.1595, 0.1588, 0.1622, 0.1611 }, { 0.1567, 0.1595, 0.1588, 0.1622, 0.1611, 0.1615 }, { 0.1595, 0.1588, 0.1622, 0.1611, 0.1615, 0.1685 }, { 0.1588, 0.1622, 0.1611, 0.1615, 0.1685, 0.1789 } };
//double[,] t1 = new double[,] { { 0.1622 }, { 0.1611 }, { 0.1615 }, { 0.1685 }, { 0.1789 } };
double[,] p1 ={ { 530092, 518743, 545639, 536369, 535346, 542842, 710893, 651351, 603625, 616120, 595818, 614996 }, { 619545, 556173, 640618, 615509, 621767, 697324, 769248, 725557, 672379, 636799, 637711, 696441 }, { 673683, 604143, 677797, 660387, 693015, 778288, 854136, 862857, 738047, 712880, 710002, 801759 } };
double[,] t1 ={ { 619545, 556173, 640618, 615509, 621767, 697324, 769248, 725557, 672379, 636799, 637711, 696441 }, { 673683, 604143, 677797, 660387, 693015, 778288, 854136, 862857, 738047, 712880, 710002, 801759 }, { 802749, 617591, 760841, 755752, 815786, 826137, 924236, 971697, 846841, 794861.2, 791652.23, 893961.285 } };
BpNet bp = new BpNet(p1, t1);
int study = 0;
do
{
study++;
if ( bp.e > 0.06|| study==1)
{
bp.train1(p1, t1);
}
else
{
bp.train2(p1, t1);
}
//bp.rate = 0.9 - (0.9 - 0.1) * study / 100000;
Console.Write("第 " + study + "次学习: ");
Console.WriteLine(" 均方差为 " + bp.e);
} while (bp.e > 0.001 && study < 100000);
Console.Write("第 " + study + "次学习: ");
Console.WriteLine(" 均方差为 " + bp.e);
bp.saveMatrix(bp.w, "w.txt");
bp.saveMatrix(bp.v, "v.txt");
bp.saveMatrix(bp.b1, "b1.txt");
bp.saveMatrix(bp.b2, "b2.txt");
//double[,] p2 = new double[,] { { 0.05, 0.02 }, { 0.09, 0.11 }, { 0.12, 0.20 }, { 0.15, 0.22 }, { 0.20, 0.25 }, { 0.75, 0.75 }, { 0.80, 0.83 }, { 0.82, 0.80 }, { 0.90, 0.89 }, { 0.95, 0.89 }, { 0.09, 0.04 }, { 0.1, 0.1 }, { 0.14, 0.21 }, { 0.18, 0.24 }, { 0.22, 0.28 }, { 0.77, 0.78 }, { 0.79, 0.81 }, { 0.84, 0.82 }, { 0.94, 0.93 }, { 0.98, 0.99 } };
//double[,] p2 = new double[,] { { 0.1399, 0.1467, 0.1567, 0.1595, 0.1588, 0.1622 }, { 0.1622, 0.1611, 0.1615, 0.1685, 0.1789, 0.1790 } };
double[,] p2 = new double[,] { { 802749, 617591, 760841, 755752, 815786, 826137, 924236, 971697, 846841, 794861.2, 791652.23, 893961.285 } };
int aa = bp.inNum;
int bb = bp.outNum;
int cc = p2.GetLength(0);
double[] p21 = new double[aa];
double[] t2 = new double[bb];
for (int n = 0; n < cc; n++)
{
for (int i = 0; i < aa; i++)
{
p21[i] = p2[n, i];
}
t2 = bp.sim(p21);
for (int i = 0; i < t2.Length; i++)
{
Console.WriteLine(t2[i] + " ");
}
}
Console.ReadLine();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -