public static void Main() { try { string logDirecotry = new FileInfo(ParameterSetting.Log_FileName).Directory.FullName; if (!Directory.Exists(logDirecotry)) { Directory.CreateDirectory(logDirecotry); } log_stream = new FileStream(ParameterSetting.Log_FileName, FileMode.Append, FileAccess.Write); log_writer = new StreamWriter(log_stream); string modelDirectory = new FileInfo(ParameterSetting.MODEL_PATH).Directory.FullName; if (!Directory.Exists(modelDirectory)) { Directory.CreateDirectory(modelDirectory); } timer.Reset(); timer.Start(); Print("Loading doc Query Stream ...."); if (ParameterSetting.CuBlasEnable) { Cudalib.CUBLAS_Init(); } //Load_Train_PairData(ParameterSetting.QFILE, ParameterSetting.DFILE); DNN_Train dnnTrain = null; /// 1. loading training dataset. dnnTrain = new DSSM_Train(); dnnTrain.LoadTrainData(new string[] { ParameterSetting.QFILE, ParameterSetting.DFILE }); if (ParameterSetting.ISVALIDATE) { if (!ParameterSetting.VALIDATE_MODEL_ONLY) { dnnTrain.LoadValidateData(new string[] { ParameterSetting.VALIDATE_QFILE, ParameterSetting.VALIDATE_DFILE, ParameterSetting.VALIDATE_QDPAIR }); } else { Program.Print("Validation process without stream; model only"); } } /// 2. loading config and start to train. dnnTrain.ModelInit_FromConfig(); dnnTrain.Training(); dnnTrain.Dispose(); log_writer.Close(); log_stream.Close(); if (ParameterSetting.CuBlasEnable) { Cudalib.CUBLAS_Destroy(); } } catch (Exception exc) { Console.Error.WriteLine(exc.ToString()); Environment.Exit(0); } }