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

📄 gp-map.c

📁 这是用matlab编写的支持向量机的函数工具箱
💻 C
字号:
/* gp-ml.c: Generic program for doing maximum likelihood with Gaussian * Processes * * (c) Copyright 1996 by Carl Edward Rasmussen. */ #include <string.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>#include <sys/time.h>#include "util.h"real *w,                                                  /* hyperparameters */     *q,                                 /* help variable - used by fgeval() */     **K, **K1, **K2;                                       /* main matrices */int  no_wts,                                    /* number of hyperparameters */     no_inp,                                              /* input dimension */     no_tar;                                            /* number of targets */struct itimerval timer;struct exampleset train;extern real *dw1, *dw2, *s;                /* arrays for the conj() function */extern void init();extern int conj(int *iter, int *epoch, int *restart, real *costvalue);extern void initTimer(struct itimerval *timer, int time);extern long elapsedTime(struct itimerval *timer);main(argc, argv)  int  argc;  char **argv;{  int  j, k, restart, succ, length, mod, iter;  real costvalue;  extern int TIMEOUT;  long nexttime;  char   trainfile[50], logfile[50];  FILE   *logf;  if (argc<3 || argc>4) {    fprintf(stderr,    "Usage: %s log-file instance-number [@]length[{%%|+}logInterval]\n",          argv[0]); exit(-1); }  parse_length(argv[3], &length, &mod);  if (length<0)    initTimer(&timer, -length*1000);                /* limit by compute time */  else    initTimer(&timer, 604800000);              /* this is a week of cpu time */  sprintf(logfile, "touch %s.%s", argv[1], argv[2]); system(logfile);  sprintf(logfile, "%s.%s", argv[1], argv[2]);  if ((logf = fopen(logfile, "r+")) == NULL) {    fprintf(stderr, "Could not open log-file %s for writing ...bye!\n",                     logfile); exit(-1); }  sprintf(trainfile, "train.%s", argv[2]);  train.num = -1; no_inp = -1;                   /* default for "don't know" */  loadExamples(&train, &no_inp, (no_tar = 1, &no_tar), trainfile, NULL);  init();  K  = createMatrix(train.num, train.num);  K1 = createMatrix(train.num, train.num);  K2 = createMatrix(train.num, train.num);  dw1 = (real*) malloc((size_t) no_wts*sizeof(real));  dw2 = (real*) malloc((size_t) no_wts*sizeof(real));  s = (real*) malloc((size_t) no_wts*sizeof(real));  q = (real*) malloc((size_t) train.num*sizeof(real));  restart = 1; iter = 0; nexttime = elapsedTime(&timer);  do {    succ = conj((j=1, &j), (k=0, &k), &restart, &costvalue); iter++;    if (((mod>0) && !(iter % mod)) ||        ((mod<0) && (elapsedTime(&timer)>nexttime))) {       fprintf(logf, "%6d %8d %10.6f %10.6f %10.6f", iter, elapsedTime(&timer),                                                         costvalue, 0.0, 0.0);      for (j=0; j<no_wts; j++) fprintf(logf, " %10.6f", w[j]);      for (j=0; j<no_wts; j++) fprintf(logf, " %10.6f", 0.0);      fprintf(logf, "\n"); fflush(logf);      nexttime -= 1000*abs(length)/mod;             /* set next time to save */    }  } while ((succ) && !(TIMEOUT) && (iter<length || length<0));}

⌨️ 快捷键说明

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