예제 #1
0
void my_read_input_parameters(int argc, char *argv[], char *trainfile, char* modelfile, 
			      LEARN_PARM *learn_parm, KERNEL_PARM *kernel_parm, STRUCT_LEARN_PARM *struct_parm,
						double *init_spl_weight, double *spl_factor) {
  
  long i;

  /* set default */
  learn_parm->maxiter=20000;
  learn_parm->svm_maxqpsize=100;
  learn_parm->svm_c=100.0;
  learn_parm->eps=0.001;
  learn_parm->biased_hyperplane=12345; /* store random seed */
  learn_parm->remove_inconsistent=10; 
  kernel_parm->kernel_type=0;
  kernel_parm->rbf_gamma=0.05;
  kernel_parm->coef_lin=1;
  kernel_parm->coef_const=1;
  kernel_parm->poly_degree=3;
	/* default: no self-paced learning */
	*init_spl_weight = 0.0;
	*spl_factor = 1.3;

	struct_parm->gram_regularization = 1E-7;
  struct_parm->solve_dual = 1;

  struct_parm->custom_argc=0;

  for(i=1;(i<argc) && ((argv[i])[0] == '-');i++) {
    switch ((argv[i])[1]) {
    case 'c': i++; learn_parm->svm_c=atof(argv[i]); break;
    case 'e': i++; learn_parm->eps=atof(argv[i]); break;
    case 's': i++; learn_parm->svm_maxqpsize=atol(argv[i]); break; 
    case 'g': i++; kernel_parm->rbf_gamma=atof(argv[i]); break;
    case 'd': i++; kernel_parm->poly_degree=atol(argv[i]); break;
    case 'r': i++; learn_parm->biased_hyperplane=atol(argv[i]); break; 
    case 't': i++; kernel_parm->kernel_type=atol(argv[i]); break;
    case 'n': i++; learn_parm->maxiter=atol(argv[i]); break;
    case 'p': i++; learn_parm->remove_inconsistent=atol(argv[i]); break; 
		case 'k': i++; *init_spl_weight = atof(argv[i]); break;
		case 'm': i++; *spl_factor = atof(argv[i]); break;
    case 'q': i++; struct_parm->solve_dual = atoi(argv[i]); break;
    case '-': strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);i++; strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);break; 
    default: printf("\nUnrecognized option %s!\n\n",argv[i]);
      exit(0);
    }

  }
	*init_spl_weight = (*init_spl_weight)/learn_parm->svm_c;

  if(i>=argc) {
    printf("\nNot enough input parameters!\n\n");
    my_wait_any_key();
    exit(0);
  }
  strcpy (trainfile, argv[i]);

  if((i+1)<argc) {
    strcpy (modelfile, argv[i+1]);
  }
	else {
		strcpy (modelfile, "lssvm.model");
	}

	/* self-paced learning weight should be non-negative */
	if(*init_spl_weight < 0.0)
		*init_spl_weight = 0.0;
	/* self-paced learning factor should be greater than 1.0 */
	if(*spl_factor < 1.0)
		*spl_factor = 1.1;

  
  parse_struct_parameters(struct_parm);
}
void my_read_input_parameters(int argc, char *argv[], char *trainfile, char* modelfile,
			      LEARN_PARM *learn_parm, KERNEL_PARM *kernel_parm, STRUCT_LEARN_PARM *struct_parm) {
  
  long i;

  /* set default */
  learn_parm->maxiter=20000;
  learn_parm->svm_maxqpsize=100;
  learn_parm->svm_c=100.0;
  //learn_parm->eps=0.001;
  learn_parm->eps=0.1; //AJAY: Changing for faster convergence
  learn_parm->biased_hyperplane=12345; /* store random seed */
  learn_parm->remove_inconsistent=10; 
  kernel_parm->kernel_type=0;
  kernel_parm->rbf_gamma=0.05;
  kernel_parm->coef_lin=1;
  kernel_parm->coef_const=1;
  kernel_parm->poly_degree=3;

  struct_parm->custom_argc=0;

  // Ajay
  learn_parm->totalEpochs = 1;
  learn_parm->numChunks = 5;

  for(i=1;(i<argc) && ((argv[i])[0] == '-');i++) {
    switch ((argv[i])[1]) {
    case 'c': i++; learn_parm->svm_c=atof(argv[i]); break;
    case 'e': i++; learn_parm->eps=atof(argv[i]); break;
    case 's': i++; learn_parm->svm_maxqpsize=atol(argv[i]); break; 
    case 'g': i++; kernel_parm->rbf_gamma=atof(argv[i]); break;
    case 'd': i++; kernel_parm->poly_degree=atol(argv[i]); break;
    case 'r': i++; learn_parm->biased_hyperplane=atol(argv[i]); break; 
    case 't': i++; kernel_parm->kernel_type=atol(argv[i]); break;
    case 'n': i++; learn_parm->maxiter=atol(argv[i]); break;
    case 'p': i++; learn_parm->remove_inconsistent=atol(argv[i]); break;
    case '-': strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);i++; strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);break;
    // Added by Ajay
    case 'f': i++; strcpy(learn_parm->tmpdir,argv[i]); printf("\nTmp file is %s\n",learn_parm->tmpdir); break;
    case 'y': i++; learn_parm->frac_sim=atof(argv[i]); printf("Frac Sim is %g\n", learn_parm->frac_sim); break;
    case 'z': i++; strcpy(learn_parm->dataset_stats_file,argv[i]);printf("Dataset Stats file is %s\n",learn_parm->dataset_stats_file);break;
    case 'w': i++; learn_parm->Fweight=atof(argv[i]); printf("Weigting param of F is %g\n",learn_parm->Fweight);break;
    case 'o': i++; learn_parm->rho_admm=atof(argv[i]); printf("Rho is %g\n", learn_parm->rho_admm); break;
    case 'a': i++; learn_parm->isExhaustive=atol(argv[i]);printf("isExhaustive is %ld",learn_parm->isExhaustive); break;
    case 'b': i++; learn_parm->isLPrelaxation=atol(argv[i]);printf("isLPrelaxation is %ld",learn_parm->isLPrelaxation); break;
    case 'K': i++; learn_parm->numChunks=atoi(argv[i]); break;
    case 'E': i++; learn_parm->totalEpochs=atoi(argv[i]); break;

    case 'C': i++; learn_parm->Cdash=atof(argv[i]); break;
   ////////////////////////
    default: printf("\nUnrecognized option %s!\n\n",argv[i]);
      exit(0);
    }

  }

  if(i>=argc) {
    printf("\nNot enough input parameters!\n\n");
    my_wait_any_key();
    exit(0);
  }
  strcpy (trainfile, argv[i]);

  if((i+1)<argc) {
    strcpy (modelfile, argv[i+1]);
  }
  
  parse_struct_parameters(struct_parm);

}
void my_read_input_parameters(int argc, char *argv[], char *trainfile, char* modelfile,
                              LEARN_PARM *learn_parm, KERNEL_PARM *kernel_parm, STRUCT_LEARN_PARM *struct_parm) {

    long i;

    /* set default */
    learn_parm->maxiter=20000;
    learn_parm->svm_maxqpsize=100;
    learn_parm->svm_c=100.0;
    learn_parm->eps=0.001;
    learn_parm->biased_hyperplane=12345; /* store random seed */
    learn_parm->remove_inconsistent=10;
    kernel_parm->kernel_type=0;
    kernel_parm->rbf_gamma=0.05;
    kernel_parm->coef_lin=1;
    kernel_parm->coef_const=1;
    kernel_parm->poly_degree=3;

    struct_parm->custom_argc=0;

    for(i=1; (i<argc) && ((argv[i])[0] == '-'); i++) {
        switch ((argv[i])[1]) {
        case 'c':
            i++;
            learn_parm->svm_c=atof(argv[i]);
            break;
        case 'e':
            i++;
            learn_parm->eps=atof(argv[i]);
            break;
        case 's':
            i++;
            learn_parm->svm_maxqpsize=atol(argv[i]);
            break;
        case 'g':
            i++;
            kernel_parm->rbf_gamma=atof(argv[i]);
            break;
        case 'd':
            i++;
            kernel_parm->poly_degree=atol(argv[i]);
            break;
        case 'r':
            i++;
            learn_parm->biased_hyperplane=atol(argv[i]);
            break;
        case 't':
            i++;
            kernel_parm->kernel_type=atol(argv[i]);
            break;
        case 'n':
            i++;
            learn_parm->maxiter=atol(argv[i]);
            break;
        case 'p':
            i++;
            learn_parm->remove_inconsistent=atol(argv[i]);
            break;
        case '-':
            strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);
            i++;
            strcpy(struct_parm->custom_argv[struct_parm->custom_argc++],argv[i]);
            break;
        default:
            printf("\nUnrecognized option %s!\n\n",argv[i]);
            exit(0);
        }

    }

    if(i>=argc) {
        printf("\nNot enough input parameters!\n\n");
        my_wait_any_key();
        exit(0);
    }
    strcpy (trainfile, argv[i]);

    if((i+1)<argc) {
        strcpy (modelfile, argv[i+1]);
    }

    parse_struct_parameters(struct_parm);

}