/*************************/ /* */ /* ko_train.c */ /* */ /* Alan Dix */ /* */ /* March 1993 */ /* */ /*************************/ #include "kohonen.h" char *use = "ko_train data code rlen alpha diam K\n\ data - file containing training data\n\ code - file containing network (code book)\n\ rlen - run length (number of iterations)\n\ alpha - rate at which vectors swing\n\ dimen - initial size of affected region\n\ K - rate at which region affected shrinks"; void usage() { fprintf(stderr,"usage: %s\n",use); exit(1); } main(argc,argv) int argc; char **argv; { int ac, ret; char **av; data_p data; code_p code; long rlen; double alpha,diam,K; ac = argc-1; av = argv+1; if ( ac != 6 ) usage(); data = read_data_file("data file",av[0]); code = read_code_file("code book",av[1]); rlen = atol(av[2]); alpha = atof(av[3]); diam = atof(av[4]); K = atof(av[5]); if ( data->wid != code->wid ) { fprintf(stderr,"incompatable data, widths do not agree\n"); exit(1); } fprintf(stderr,"train kohonen network\n"); fprintf(stderr," data = %s\n",av[0]); fprintf(stderr," code = %s\n",av[1]); fprintf(stderr," rlen = %ld\n",rlen); fprintf(stderr," alpha = %lf\n",alpha); fprintf(stderr," diam = %lf\n",diam); fprintf(stderr," K = %lf\n",K); fprintf(stderr,"----\n"); ret = train_code(rlen,alpha,diam,K,data,code); if ( ! ret ) { fprintf(stderr,"error whilst training\n"); exit(1); } write_code(stdout,code); exit(0); }