Example #1
0
        public static void CreateConvBatFile(string scriptName, string scriptsPath, string datasetPath, string modelPath, string labelPath, string plotPath, string networkName, int epoch, /*AutonomicParams ap,*/ int indexNumber, int mode)
        {
            string modeDir = string.Empty;

            if (mode == 0)
            {
                modeDir = @"\genetic\";
            }
            else if (mode == 1)
            {
                modeDir = @"\custom\";
            }
            DirectoryInfo di;

            // добавить безопасность созданию директорий
            // Models Directory
            di = Directory.CreateDirectory(@"C:\keras\folder");
            string currentModelsDirectory = modelPath + modeDir + di.CreationTime.ToString("MM-dd-yyyy");

            if (!Directory.Exists(currentModelsDirectory))
            {
                Directory.Move(@"C:\keras\folder", currentModelsDirectory);
            }
            else
            {
                Directory.Delete(@"C:\keras\folder");
            }
            // Labels Directory
            di = Directory.CreateDirectory(@"C:\keras\folder");
            string currentLabelsDirectory = labelPath + modeDir + di.CreationTime.ToString("MM-dd-yyyy");

            if (!Directory.Exists(currentLabelsDirectory))
            {
                Directory.Move(@"C:\keras\folder", currentLabelsDirectory);
            }
            else
            {
                Directory.Delete(@"C:\keras\folder");
            }
            // Plots Directory
            di = Directory.CreateDirectory(@"C:\keras\folder");
            string currentPlotsDirectory = plotPath + modeDir + di.CreationTime.ToString("MM-dd-yyyy");

            if (!Directory.Exists(currentPlotsDirectory))
            {
                Directory.Move(@"C:\keras\folder", currentPlotsDirectory);
            }
            else
            {
                Directory.Delete(@"C:\keras\folder");
            }

            string time         = File.GetLastWriteTime(scriptsPath + @"\" + scriptName).ToString("HH-mm-ss");
            string filenamePart = epoch + "-ep_" + indexNumber + "chr_" + networkName + "_" + time;
            //string currentTask = networkName;

            string code = @"C:\Users\Rinnetensei\Anaconda3\envs\keras\python.exe " + scriptsPath + @"\" + scriptName + " -d " +
                          datasetPath + " -m " + currentModelsDirectory + @"\" + filenamePart + "_m -l " + currentLabelsDirectory + @"\" +
                          filenamePart + "_l -p " + currentPlotsDirectory + @"\" + filenamePart + "_p.png";

            try
            {
                File.Copy(@"C:\keras\Directory\scripts\train.bat", @"C:\keras\Directory\scripts\convolutional\temp_train.bat", true);

                Support.insertLineToFile(@"C:\keras\Directory\scripts\convolutional\temp_train.bat", 3, code);
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }
Example #2
0
        public static void InsertConvNetworkCode(String path, int line, ConvolutionalNetwork network, List <String> convActivations, List <String> denseActivations)
        {
            string loss_function = "\"categorical_crossentropy\"";

            if (network.outputs == 2)
            {
                loss_function = "\"binary_crossentropy\"";
            }

            string init_lr = network.trainConstSpeed.ToString();

            init_lr = init_lr.Replace(",", ".");
            string callbacks_str = "";


            string code = "";

            for (int i = 0; i < network.filters.Count; i++)
            {
                if (i == 0)
                {
                    code += "model.add(ZeroPadding2D((1, 1), input_shape = (128, 128, 3)))" + Environment.NewLine;
                }
                code += "model.add(Conv2D(" + network.filters[i].ToString() + ", kernel_size = (" +
                        network.slidingWindows[i][0].ToString() + ", " + network.slidingWindows[i][1].ToString() +
                        "), strides = (1, 1), padding='same', activation = '" + convActivations[network.convActivationIndexes[i]] + "'))" + Environment.NewLine;
                code += "model.add(MaxPooling2D(pool_size = (2, 2), strides = (2, 2)))" + Environment.NewLine;
            }
            code += "model.add(Flatten())" + Environment.NewLine;
            int dropoutCounter = 0;

            for (int i = 0; i < network.neurons.Count; i++)
            {
                code += "model.add(Dense(" + network.neurons[i].ToString() + ", activation = '" +
                        denseActivations[network.denseActivationIndexes[i]] + "'))" + Environment.NewLine;
                if (network.denseDropoutIndexes.Count > 0)
                {
                    if (network.denseDropoutIndexes[dropoutCounter] == i)
                    {
                        code += "model.add(Dropout(" + ((float)network.denseDropoutRates[dropoutCounter] / 100).ToString() + "))" + Environment.NewLine;

                        if ((network.denseDropoutIndexes.Count - 1) != dropoutCounter)
                        {
                            dropoutCounter++;
                        }
                    }
                }
            }
            if (network.outputs == 2)
            {
                code += "model.add(Dense(2, activation = \"softmax\"))" + Environment.NewLine;
            }
            else
            {
                code += "model.add(Dense(len(lb.classes_), activation = \"softmax\"))" + Environment.NewLine;
            }
            code += "INIT_LR = " + init_lr + Environment.NewLine +
                    "EPOCHS = " + network.networkLearningEpochs.ToString() + Environment.NewLine +
                    "BS = " + network.batchSize.ToString() + Environment.NewLine + Environment.NewLine;
            code += "print(\"[INFO] training network...\")" + Environment.NewLine;
            code += "opt = SGD(lr=INIT_LR)" + Environment.NewLine;
            code += "model.compile(loss=" + loss_function + ", optimizer=opt, metrics=[\"acc\"])" + Environment.NewLine;
            //code += "" + Environment.NewLine;
            Support.insertLineToFile(path, line, code);

            string forBinaryCode = "trainY = to_categorical(trainY)" + Environment.NewLine +
                                   "testY = to_categorical(testY)" + Environment.NewLine;

            if (network.outputs == 2)
            {
                Support.insertLineToFile(path, 66, forBinaryCode);
            }
        }