📄 somtrain.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include "somneuro.h"
main()
{
char filename[128];
int key=1;
int nb_cycle;
int i,j,k,n1,n2,n3,N;
cout<<"Input filename of training data for SOM clustering : ";
cin>>filename;
ifstream in1(filename);
// cout<<"Output filename of category map : ";
// cin>>filename;
// ofstream out1(filename);
// ifstream in1("test.dat");
ofstream out1("sommap.dat");
ofstream out2("somwgt.dat");
if(!in1){cout<<"Cannot open file! Any key to terminate...";cin>>key;exit(1);}
cout<<"Input the numeber of cycles:";
cin>>nb_cycle;
in1>>n1>>n2>>n3;
//in1>>n1>>n3;
if(n2>1)
{
cout<<"The number of observed output can't larger than 1! Any key to terminate...";
getchar();exit(1);
}
f2D Input;
f1D Output;
Input.Initialize(n3,n1);
Output.Initialize(n3);
for(i=0;i<n3;i++)
{
for(j=0;j<n1;j++)in1>>Input.m[i][j];
in1>>Output.m[i];
}
cout<<" Enter Size of 2-dimensional output Kohonom layer(Size*Size= # of category): ";
cin>>N;
SOMNeuroNet SOM;
SOM.LoadTrainingData(N, Input, Output);
float convergence,err;
k=0;
while(key==1)
{
for(i=0;i<nb_cycle;i++)
{
convergence = SOM.LearningFromBatchData();
cout<<i<<endl;
}
cout<<"k="<<k<<" , convergence coefficient="<<convergence<<endl;
err=SOM.CalculCategoryMap();
cout<<"Mis-classification error"<<err<<endl<<endl;
cout<<"encore? (1/0) ";cin>>key;
k++;
}
SOM.SaveCategoryMap(out1);
SOM.Save(out2);
cout<<"any key to terminate...";
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -