PrepareNNData(Dictionary <string, string> dicMParameters, CreateCustomModel customModel, DeviceDescriptor device) { try { //create factory object MLFactory f = CreateMLFactory(dicMParameters); //create learning params var strLearning = dicMParameters["learning"]; LearningParameters lrData = MLFactory.CreateLearningParameters(strLearning); //create training param var strTraining = dicMParameters["training"]; TrainingParameters trData = MLFactory.CreateTrainingParameters(strTraining); //set model component locations var dicPath = MLFactory.GetMLConfigComponentPaths(dicMParameters["paths"]); // trData.ModelTempLocation = $"{dicMParameters["root"]}\\{dicPath["TempModels"]}"; trData.ModelFinalLocation = $"{dicMParameters["root"]}\\{dicPath["Models"]}"; var strTrainPath = $"{dicMParameters["root"]}\\{dicPath["Training"]}"; var strValidPath = (string.IsNullOrEmpty(dicPath["Validation"]) || dicPath["Validation"] == " ") ? "": $"{dicMParameters["root"]}\\{dicPath["Validation"]}"; //data normalization in case the option is enabled //check if network contains Normalization layer and assign value to normalization parameter if (dicMParameters["network"].Contains("Normalization")) { trData.Normalization = new string[] { MLFactory.m_NumFeaturesGroupName } } ; //perform data normalization according to the normalization parameter List <Variable> networkInput = NormalizeInputLayer(trData, f, strTrainPath, strValidPath, device); //create network parameters Function nnModel = CreateNetworkModel(dicMParameters["network"], networkInput, f.OutputVariables, customModel, device); //create minibatch spurce var mbs = new MinibatchSourceEx(trData.Type, f.StreamConfigurations.ToArray(), strTrainPath, strValidPath, MinibatchSource.InfinitelyRepeat, trData.RandomizeBatch); //return ml parameters return(f, lrData, trData, nnModel, mbs); } catch (Exception) { throw; } }