cmdfiletest.cc
来自「torch tracking code, it is a good code」· CC 代码 · 共 226 行
CC
226 行
const char *help = "\progname: cmdfileTest.cc\n\code2html: This program tests the class CmdFile.\n\version: Torch3 vision2.0, 2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "CmdLine.h"#include "CmdFile.h"using namespace Torch;int main(int argc, char **argv){ char *model_name = NULL; char *train_param = NULL; char *data_param = NULL; char *model_param = NULL; CmdLine cmd; cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("model name", &model_name, "the name of the model"); cmd.addText("\nOptions:"); cmd.addSCmdOption("-tp", &train_param, "params/train.param", "the training parameter file"); cmd.addSCmdOption("-dp", &data_param, "params/data.param", "the data parameter file"); cmd.addSCmdOption("-mp", &model_param, "params/model.param", "the model parameter file"); // Read the command line cmd.read(argc, argv); print("tp=%s\n", train_param); print("dp=%s\n", data_param); print("mp=%s\n", model_param); int EpochPlotLimit, EpochPlotStep; int the_seed; real accuracy, criterion_min; real learning_rate, learning_rate_decay, weight_mse, weight_mvse, weight_decay; int max_iter; int epoch_early_stop_train; int epoch_early_stop_valid; bool regression, cgm, gm; message("# MODEL : %s ##", model_name); CmdFile cmdf_train; cmdf_train.info("Training Parameters"); cmdf_train.addText("\nStandard training parameters:"); cmdf_train.addRCmd("LearningRate", &learning_rate, "Learning rate"); cmdf_train.addRCmd("WeightMse", &weight_mse, "Weight for Mse Criterion"); cmdf_train.addRCmd("WeightMvse", &weight_mvse, "Weight for Mvse Criterion"); cmdf_train.addICmd("EpochMax", &max_iter, "Maximum number of epoch"); cmdf_train.addBCmdOption("Regression", ®ression, false, "Use regression mode"); cmdf_train.addBCmdOption("Generative", &gm, false, "Use generative mode"); cmdf_train.addBCmdOption("ConstrainedGenerative", &cgm, false, "Use constrained generative mode"); cmdf_train.addText("\nOptional parameters to control the training:"); cmdf_train.addRCmdOption("LearningRateDecay", &learning_rate_decay, 0.0, "Learning rate decay"); cmdf_train.addRCmdOption("WeightDecay", &weight_decay, 0.0, "Weight decay"); cmdf_train.addText("\nOptional parameters to stop the training:"); cmdf_train.addICmdOption("EarlyStoppingTrain", &epoch_early_stop_train, 0, "Maximum epoch number after the last minimum on the training set"); cmdf_train.addICmdOption("EarlyStoppingValid", &epoch_early_stop_valid, 0, "Maximum epoch number after the last minimum on the validation set"); cmdf_train.addRCmdOption("EndAccuracy", &accuracy, -1.0,"End accuracy"); cmdf_train.addRCmdOption("MinimumCriterion", &criterion_min, 0.0, "Minimum criterion"); cmdf_train.addText("\nOthers optional training parameters:"); cmdf_train.addICmdOption("EpochPlotLimit", &EpochPlotLimit, 10, "Epoch plot limit"); cmdf_train.addICmdOption("EpochPlotStep", &EpochPlotStep, 10, "Epoch plot step"); cmdf_train.addICmdOption("ManualSeed", &the_seed, -1, "The random seed"); cmdf_train.read(train_param); cmdf_train.help(); print("LearningRate %2.6f\n", learning_rate); print("WeightMse %2.6f\n", weight_mse); print("WeightMvse %2.6f\n", weight_mvse); print("EpochMax %d\n", max_iter); print("Regression %d\n", regression); print("Generative %d\n", gm); print("ConstrainedGenerative %d\n", cgm); print("LearningRateDecay %2.6f\n", learning_rate_decay); print("WeightDecay %2.6f\n", weight_decay); print("EarlyStoppingTrain %d\n", epoch_early_stop_train); print("EarlyStoppingValid %d\n", epoch_early_stop_valid); print("EndAccuracy %2.6f\n", accuracy); print("MinimumCriterion %2.6f\n", criterion_min); print("EpochPlotLimit %d\n", EpochPlotLimit); print("EpochPlotStep %d\n", EpochPlotStep); print("ManualSeed %d\n", the_seed); print("\n\n"); bool StdOrBindata, TargetInside, StdBin; int NbTrainingSets, NbValidationSets, NbTestSets; char **TrainingSet; char **ValidationSet; char **TestSet; char **RootName; char *Extension; CmdFile cmdf_data; cmdf_data.info("Database"); cmdf_data.addText("\nType of datasets :"); cmdf_data.addBCmd("StdOrBindata", &StdOrBindata, "Type of datasets"); cmdf_data.addBCmd("TargetInside", &TargetInside, "Targets into datasets. If not you are only able to deal with 1 or 2 class problem"); cmdf_data.addBCmdOption("StdBin", &StdBin, false, "Std dataset bin or not ?"); cmdf_data.addText("\nNumber of datasets :"); cmdf_data.addICmd("NbTrainingSets", &NbTrainingSets, "Number of training sets"); cmdf_data.addICmdOption("NbValidationSets", &NbValidationSets, 0, "Number of validation sets"); cmdf_data.addICmdOption("NbTestSets", &NbTestSets, 0, "Number of test sets"); cmdf_data.addSCmdOption("Extension", &Extension, "", "Extension"); cmdf_data.read(data_param, false); cmdf_data.addText("\nDatasets :"); cmdf_data.addHrefSCmdOption("RootName[%d]", &RootName, "", "Root name", NbTrainingSets); cmdf_data.addHrefSCmd("TrainingSet[%d]", &TrainingSet, "Training set", NbTrainingSets); if(NbValidationSets != 0) { cmdf_data.addHrefSCmdOption("ValidationSet[%d]", &ValidationSet, "", "Validation set", NbValidationSets); if(NbTestSets != 0) cmdf_data.addHrefSCmdOption("TestSet[%d]", &TestSet, "", "Test set", NbTestSets); } cmdf_data.readHref(); cmdf_data.help(); print("StdOrBindata %d\n", StdOrBindata); print("TargetInside %d\n", TargetInside); print("StdBin %d\n", StdBin); print("NbTrainingSets %d\n", NbTrainingSets); print("NbValidationSets %d\n", NbValidationSets); print("NbTestSets %d\n", NbTestSets); print("Extension \"%s\"\n", Extension); for(int i = 0 ; i < NbTrainingSets ; i++) { print("RootName [%d] \"%s\"\n", i, RootName[i]); print("TrainingSet[%d] \"%s\"\n", i, TrainingSet[i]); } for(int i = 0 ; i < NbValidationSets ; i++) print("ValidationSet[%d] \"%s\"\n", i, ValidationSet[i]); for(int i = 0 ; i < NbTestSets ; i++) print("TestSet[%d] \"%s\"\n", i, TestSet[i]); print("\n\n"); int n_inputs; int n_targets; int n_hidden_layer; int *n_hidden; bool bSigmoid, InputsToOutputs; CmdFile cmdf_model; cmdf_model.info("Model parameters"); cmdf_model.addICmd("NbInputs", &n_inputs, "Input dimension of the model"); cmdf_model.addICmd("NbOutputs", &n_targets, "Output dimension of the model"); cmdf_model.addICmd("NbHiddenLayers", &n_hidden_layer, "Hidden layer in the model"); cmdf_model.addBCmdOption("SigmoidOrTanh", &bSigmoid, false, "Using Sigmoid units or not (Tanh if not)"); cmdf_model.addBCmdOption("InputsToOutputs", &InputsToOutputs, false, "Connect Inputs to Outputs (help sometimes)"); cmdf_model.read(model_param, false); cmdf_model.addHrefICmd("NbHidden[%d]", &n_hidden, "Hidden units", n_hidden_layer); cmdf_model.readHref(); cmdf_model.help(); print("NbInputs %d\n", n_inputs); print("NbOutputs %d\n", n_targets); print("NbHiddenLayers %d\n", n_hidden_layer); print("SigmoidOrTanh %d\n", bSigmoid); print("InputsToOutputs %d\n", InputsToOutputs); for(int i = 0 ; i < n_hidden_layer ; i++) print("NbHidden[%d] %d\n", i, n_hidden[i]); print("\n\n"); DiskXFile f("params/connect.mat", "r"); int n_rows, n_cols; f.scanf("%d", &n_rows); f.scanf("%d", &n_cols); print("n rows = %d\n", n_rows); print("n cols = %d\n", n_cols); char str[50]; for(int row = 0 ; row < n_rows ; row++) { for(int col = 0 ; col < n_cols ; col++) { f.scanf("%s", &str); print("%s ", str); } print("\n"); } print("\n\n"); print("That's all folks !\n"); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?