예제 #1
0
 public static ComputeDevice GetFirstOpenCLDevice()
 {
     foreach (var item in ComputeDeviceFactory.GetComputeDevices())
     {
         if (item.GetDeviceAccessType().ToLower() == "opencl")
         {
             return(ComputeDeviceFactory.CreateComputeDevice(item));
         }
     }
     return(null);
 }
예제 #2
0
        public MainWindow()
        {
            InitializeComponent();
            RecreateNetwork();

            var deviceList = ComputeDeviceFactory.GetComputeDevices();

            foreach (var device in deviceList)
            {
                string item = device.GetDeviceAccessType() + " - " + device.GetDeviceName();
                cmbComputeDevice.Items.Add(item);
            }
            cmbComputeDevice.SelectedIndex = 0;
        }
예제 #3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            List <int> layerConfig = new List <int>(new int[] { 5, 32, 32, 5 });

            solver = Network.CreateNetworkInitRandom(layerConfig.ToArray(), new SigmoidActivation(), new DefaultWeightInitializer());

            calculator = ComputeDeviceFactory.CreateFallbackComputeDevice();

            foreach (var device in ComputeDeviceFactory.GetComputeDevices())
            {
                string item = device.GetDeviceAccessType() + " - " + device.GetDeviceName();
                comboBox1.Items.Add(item);
            }
            comboBox1.SelectedIndex = 0;
        }
예제 #4
0
        private void Form1_Load(object sender, EventArgs e)
        {
            comboRegularization.SelectedIndex = 2;
            comboCostFunction.SelectedIndex   = 1;

            calculator = ComputeDeviceFactory.CreateFallbackComputeDevice();

            bitmap           = new Bitmap(targetWidth, targetHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb565);
            bitmapDownscaled = new Bitmap(downScaleWidth, downScaleHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb565);
            ClearBitmap();
            pictureBox1.Image = bitmap;

            foreach (var device in ComputeDeviceFactory.GetComputeDevices())
            {
                string item = device.GetDeviceAccessType() + " - " + device.GetDeviceName();
                comboBox1.Items.Add(item);
            }
            comboBox1.SelectedIndex = 0;

            trainingtimer.Interval = 300;
            trainingtimer.Tick    += Trainingtimer_Tick;

            InitRandomNetwork();
        }
예제 #5
0
        static void Main(string[] args)
        {
            Console.WriteLine(" ### macademy test console ");
            ComputeDevice selectedDevice = ComputeDeviceFactory.CreateFallbackComputeDevice();

            Generate();

            while (true)
            {
                Console.WriteLine("");
                Console.Write("> ");
                string rawCommand = Console.ReadLine().Trim();
                var    commands   = rawCommand.Split(' ');
                if (commands.Length == 0)
                {
                    continue;
                }

                var nextCommand = commands[0];

                try
                {
                    if (nextCommand == "exit")
                    {
                        break;
                    }
                    else if (nextCommand == "help")
                    {
                        Console.WriteLine("General");
                        Console.WriteLine(" help          - Displays this help message");
                        Console.WriteLine(" exit          - Exits the app");
                        Console.WriteLine("");
                        Console.WriteLine("Device selection");
                        Console.WriteLine(" devices       - Displays available devices");
                        Console.WriteLine(" select (n)    - Selectes the devices with the given id");
                        Console.WriteLine(" info          - Displays information about the selected device");
                        Console.WriteLine(" quicktest     - Performs a quick test on the selected device");
                        Console.WriteLine(" benchmark [n] - Performs a benchmark on the selected device, on the given difficulty (1-10, default: 2)");
                        Console.WriteLine("");
                        Console.WriteLine("Model training and testing");
                        Console.WriteLine(" generate      - Generates a new network");
                        Console.WriteLine(" train         - Trains the network");
                        Console.WriteLine(" eval (i)      - Evaluates the output of the network to the given input");
                        Console.WriteLine(" export [f]    - Exports the current network to the filename provided (default: 'output.json')");
                        Console.WriteLine(" import [f]    - Imports the network from the filename provided (default: 'output.json')");
                    }
                    else if (nextCommand == "devices")
                    {
                        var devices = ComputeDeviceFactory.GetComputeDevices();
                        System.Console.WriteLine(String.Format("Found a total of {0} devices!", devices.Count));
                        int i = 0;
                        foreach (var dev in devices)
                        {
                            Console.WriteLine(String.Format((i++).ToString() + ": [{0}] {1}", dev.GetDeviceAccessType(), dev.GetDeviceName()));
                        }
                    }
                    else if (nextCommand.StartsWith("select"))
                    {
                        if (commands.Length >= 2)
                        {
                            var devices = ComputeDeviceFactory.GetComputeDevices();

                            int selectedDeviceId = 0;
                            if (int.TryParse(commands[1], out selectedDeviceId))
                            {
                                if (selectedDeviceId < 0 || selectedDeviceId >= devices.Count)
                                {
                                    Console.WriteLine("No such device: " + selectedDeviceId);
                                    continue;
                                }

                                selectedDevice = ComputeDeviceFactory.CreateComputeDevice(devices[selectedDeviceId]);
                                Console.WriteLine("Selected device: " + selectedDeviceId + ": " + selectedDevice.GetName());
                            }
                            else
                            {
                                Console.WriteLine("Invalid device id given!");
                            }
                        }
                        else
                        {
                            Console.WriteLine("No device id given!");
                        }
                    }
                    else if (nextCommand == "quicktest")
                    {
                        Console.WriteLine("Testing on device: " + selectedDevice.GetName());
                        TestDevice(selectedDevice);
                    }
                    else if (nextCommand == "train")
                    {
                        int epochs = 1;

                        if (commands.Length >= 2)
                        {
                            int.TryParse(commands[1], out epochs);
                        }

                        Train(selectedDevice, epochs);
                    }
                    else if (nextCommand == "eval")
                    {
                        if (commands.Length < 2)
                        {
                            Console.WriteLine("No input given!");
                            continue;
                        }

                        List <float> input_values = new List <float>();
                        for (int i = 1; i < commands.Length; ++i)
                        {
                            float input = 0;
                            if (!float.TryParse(commands[i], out input))
                            {
                                Console.WriteLine("Invalid input given at index {0}", (i - 1));
                            }

                            input_values.Add(input);
                        }

                        float[] result = Eval(input_values.ToArray(), selectedDevice);

                        Console.WriteLine("Network output: [" + string.Join(", ", result) + "]");
                    }
                    else if (nextCommand == "generate")
                    {
                        Generate();
                        Console.WriteLine("A new network has been generated!");
                    }
                    else if (nextCommand == "benchmark")
                    {
                        int level = 2;

                        if (commands.Length >= 2)
                        {
                            try
                            {
                                level = Math.Max(Math.Min(10, Int32.Parse(commands[1])), 1);
                            }
                            catch (System.Exception)
                            {
                            }
                        }

                        BenchmarkDevice(selectedDevice, level);
                    }
                    else if (nextCommand == "export")
                    {
                        string filename = "output.json";

                        if (commands.Length >= 2)
                        {
                            filename = commands[1];
                        }

                        try
                        {
                            System.IO.File.WriteAllText(filename, target_network.ExportToJSON());
                            Console.WriteLine("Model exported to: '{0}'", filename);
                        }
                        catch (Exception exc)
                        {
                            Console.WriteLine("Error: " + exc.Message);
                        }
                    }
                    else if (nextCommand == "import")
                    {
                        string filename = "output.json";

                        if (commands.Length >= 2)
                        {
                            filename = commands[1];
                        }

                        try
                        {
                            string json_network = System.IO.File.ReadAllText(filename);
                            target_network = Network.CreateNetworkFromJSON(json_network);
                            Console.WriteLine("Model imported from: '{0}'", filename);
                        }
                        catch (Exception exc)
                        {
                            Console.WriteLine("Error: " + exc.Message);
                        }
                    }
                    else if (nextCommand == "info")
                    {
                        if (selectedDevice != null)
                        {
                            Console.WriteLine("Device Name: " + selectedDevice.GetName());
                            Console.WriteLine("Device Access: " + selectedDevice.GetDeviceAccessMode());
                            Console.WriteLine("Core count: " + selectedDevice.GetDeviceCoreCount());
                            Console.WriteLine("Memory: " + selectedDevice.GetDeviceMemorySize());
                        }
                        else
                        {
                            Console.WriteLine("CPU Fallback device is selected!");
                        }
                    }
                }
                catch (System.Exception exc)
                {
                    Console.WriteLine("An error occured when running the command! " + exc.ToString());
                }
            }
        }
예제 #6
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var devices = ComputeDeviceFactory.GetComputeDevices();

            calculator = ComputeDeviceFactory.CreateComputeDevice(devices[comboBox1.SelectedIndex]);
        }
예제 #7
0
        static void Main(string[] args)
        {
            Console.WriteLine(" ### macademy test console ");
            ComputeDevice selectedDevice = ComputeDeviceFactory.CreateFallbackComputeDevice();

            while (true)
            {
                Console.WriteLine("");
                string rawCommand = Console.ReadLine().Trim();
                var    commands   = rawCommand.Split(' ');
                if (commands.Length == 0)
                {
                    continue;
                }

                var nextCommand = commands[0];

                try
                {
                    if (nextCommand == "exit")
                    {
                        break;
                    }
                    else if (nextCommand == "help")
                    {
                        Console.WriteLine("help       - Displays this help message");
                        Console.WriteLine("devices    - Displays available devices");
                        Console.WriteLine("select (n) - Selectes the devices with the given id");
                        Console.WriteLine("info       - Displays information about the selected device");
                        Console.WriteLine("test       - Performs a quick test on the selected device");
                        Console.WriteLine("exit       - Exits the app");
                    }
                    else if (nextCommand == "devices")
                    {
                        var devices = ComputeDeviceFactory.GetComputeDevices();
                        System.Console.WriteLine(String.Format("Found a total of {0} devices!", devices.Count));
                        int i = 0;
                        foreach (var dev in devices)
                        {
                            Console.WriteLine(String.Format((i++).ToString() + ": [{0}] {1}", dev.GetDeviceAccessType(), dev.GetDeviceName()));
                        }
                    }
                    else if (nextCommand.StartsWith("select"))
                    {
                        if (commands.Length >= 2)
                        {
                            var devices = ComputeDeviceFactory.GetComputeDevices();

                            int selectedDeviceId = 0;
                            if (int.TryParse(commands[1], out selectedDeviceId))
                            {
                                if (selectedDeviceId < 0 || selectedDeviceId >= devices.Count)
                                {
                                    Console.WriteLine("No such device: " + selectedDeviceId);
                                    continue;
                                }

                                selectedDevice = ComputeDeviceFactory.CreateComputeDevice(devices[selectedDeviceId]);
                                Console.WriteLine("Selected device: " + selectedDeviceId + ": " + selectedDevice.GetName());
                            }
                            else
                            {
                                Console.WriteLine("Invalid device id given!");
                            }
                        }
                        else
                        {
                            Console.WriteLine("No device id given!");
                        }
                    }
                    else if (nextCommand == "test")
                    {
                        Console.WriteLine("Testing on device: " + selectedDevice.GetName());
                        TestDevice(selectedDevice);
                    }
                    else if (nextCommand == "info")
                    {
                        if (selectedDevice != null)
                        {
                            Console.WriteLine("Device Name: " + selectedDevice.GetName());
                            Console.WriteLine("Device Access: " + selectedDevice.GetDeviceAccessMode());
                            Console.WriteLine("Core count: " + selectedDevice.GetDeviceCoreCount());
                            Console.WriteLine("Memory: " + selectedDevice.GetDeviceMemorySize());
                        }
                        else
                        {
                            Console.WriteLine("CPU Fallback device is selected!");
                        }
                    }
                }
                catch (System.Exception exc)
                {
                    Console.WriteLine("An error occured when running the command! " + exc.ToString());
                }
            }
        }