Пример #1
0
int lwpr_xml_read_file_into_buffer(const char *filename, char **buffer) {
   int length,numRead;
   char *buf;
   FILE *fp;

   fp = fopen(filename,"r");
   if (fp==NULL) return -1;

   fseek(fp,0,SEEK_END);
   length=ftell(fp);
   buf = (char *) LWPR_MALLOC((size_t)length);
   if (buf==NULL) {
      fclose(fp);
      return -1;
   }

   *buffer = buf;

   rewind(fp);
   numRead = 0;
   while (numRead<length) {
      size_t n = fread(buf,1,(size_t)(length-numRead),fp);
      if (n==0) {
         LWPR_FREE(*buffer);
         fclose(fp);
         return -1;
      }
      buf +=n;
      numRead+=n;
   }
   fclose(fp);
   return length;
}
Пример #2
0
int lwpr_read_binary_fp(LWPR_Model *model, FILE *fp) {
   char str[5];
   int ok;
   int nIn,nInS,nOut;
   int i,dim;
   int version;
   
   ok = (int) fread(str, sizeof(char), 4, fp);
   if (ok!=4) return 0;
   
   str[4]=0;
   if (strcmp(str,"LWPR")!=0) return 0;  
   
   if (!lwpr_io_read_int(fp, &version)) return 0;
   
   if (version!=LWPR_BINIO_VERSION) {
      fprintf(stderr,"Sorry, version of binary LWPR file does not match this implementation.\n");
      return 0;
   }
  
   if (!lwpr_io_read_int(fp, &nIn) || !lwpr_io_read_int(fp, &nOut)) return 0;
   if (nIn<=0) return 0;
   if (nOut<=0) return 0;
   if (!lwpr_init_model(model, nIn, nOut, NULL)) return 0;
   
   ok = lwpr_io_read_int(fp, &i);
   model->kernel = (LWPR_Kernel) i;
   
   ok &= lwpr_io_read_int(fp, &i);
   
   if (i>0) {
      size_t len = (size_t) i;
      model->name = (char *) LWPR_MALLOC((len+1)*sizeof(char));
      if (model->name == NULL) return 0;
      ok &= (fread(model->name, sizeof(char), len, fp) == len)?1:0;
      model->name[i] = 0;
   }
   nInS = model->nInStore;
   
   ok &= lwpr_io_read_int(fp, &model->n_data);
   ok &= lwpr_io_read_vector(fp, nIn, model->mean_x);
   ok &= lwpr_io_read_vector(fp, nIn, model->var_x);   
   ok &= lwpr_io_read_int(fp, &model->diag_only);
   ok &= lwpr_io_read_int(fp, &model->update_D);   
   ok &= lwpr_io_read_int(fp, &model->meta);
   ok &= lwpr_io_read_scalar(fp, &model->meta_rate);
   ok &= lwpr_io_read_scalar(fp, &model->penalty);   
   ok &= lwpr_io_read_matrix(fp, nIn, nInS, nIn, model->init_alpha);
   ok &= lwpr_io_read_vector(fp, nIn, model->norm_in);
   ok &= lwpr_io_read_vector(fp, nOut, model->norm_out);   
   ok &= lwpr_io_read_matrix(fp, nIn, nInS, nIn, model->init_D);   
   ok &= lwpr_io_read_matrix(fp, nIn, nInS, nIn, model->init_M); 
   
   ok &= lwpr_io_read_scalar(fp, &model->w_gen);  
   ok &= lwpr_io_read_scalar(fp, &model->w_prune);   
   ok &= lwpr_io_read_scalar(fp, &model->init_lambda);   
   ok &= lwpr_io_read_scalar(fp, &model->final_lambda);   
   ok &= lwpr_io_read_scalar(fp, &model->tau_lambda);      
   ok &= lwpr_io_read_scalar(fp, &model->init_S2);      
   ok &= lwpr_io_read_scalar(fp, &model->add_threshold); 
   
   for (dim=0;dim<model->nOut;dim++) {
      int numRFS;
      LWPR_SubModel *sub = &model->sub[dim];   
      ok &= (fread(str, sizeof(char), 4, fp)==4)?1:0;
      str[4]=0;
      if (!ok || strcmp(str,"SUBM")!=0) {
         lwpr_free_model(model);
         return 0;
      }
      ok &= lwpr_io_read_int(fp, &i);
      ok &= (i==dim);
      ok &= lwpr_io_read_int(fp, &numRFS);      
      ok &= lwpr_io_read_int(fp, &sub->n_pruned);            
      for (i=0;i<numRFS;i++) {
         ok &= lwpr_io_read_rf(fp, sub);
      }
      ok &= (numRFS == sub->numRFS);
   }
   ok &= (fread(str, sizeof(char), 4, fp) == 4)?1:0;   
   str[4] = 0;
   if (!ok || strcmp(str,"RPWL")!=0) {
      lwpr_free_model(model);
      return 0;
   }

   return 1;
}