コード例 #1
0
        public static void MnistTest()
        {
            if (Worker.Default.Device.Arch.Number < 300)
            {
                Assert.Inconclusive("using cudnn need arch >= 3.0");
            }

            try
            {
                var worker = Worker.Default;

                using (var network = new Network(worker))
                {
                    var conv1 = Layer.Conv1(worker);
                    var conv2 = Layer.Conv2(worker);
                    var ip1   = Layer.Ip1(worker);
                    var ip2   = Layer.Ip2(worker);

                    Console.WriteLine("Classifying....");
                    var i1 = network.ClassifyExample(Data.FirstImage, conv1, conv2, ip1, ip2);
                    var i2 = network.ClassifyExample(Data.SecondImage, conv1, conv2, ip1, ip2);
                    var i3 = network.ClassifyExample(Data.ThirdImage, conv1, conv2, ip1, ip2);

                    Console.WriteLine("\n==========================================================\n");
                    Console.WriteLine("Result of Classification: {0}, {1}, {2}", i1, i2, i3);

                    if ((i1 != 1) || (i2 != 3) || (i3 != 5))
                    {
                        Console.WriteLine("Test Failed!!");
                    }
                    else
                    {
                        Console.WriteLine("Test Passed!!");
                    }

                    Console.WriteLine("\n==========================================================\n");
                    Assert.AreEqual(i1, 1);
                    Assert.AreEqual(i2, 3);
                    Assert.AreEqual(i3, 5);
                }
            }
            catch (DllNotFoundException)
            {
                Assert.Inconclusive("You need set the environment for cudnn native to do this test.");
            }
        }