Esempio n. 1
0
        static void CNN(List <DenseVector[]> Data)//畳み込みニューラルネットワーク
        {
            //MNISTの読み込み
            MNistImageLoader imgLoader = MNistImageLoader.Load("train-images.idx3-ubyte");
            MNistLabelLoader lLoader   = MNistLabelLoader.Load("train-labels.idx1-ubyte");
            //////////データ用意
            Random rnd = new Random();
            List <DenseVector[]> xds = new List <DenseVector[]>();

            for (int i = 0; i < 10000000; i++)
            {
                xds.Add(new DenseVector[2] {
                    new DenseVector(1), new DenseVector(1)
                });
                double a = rnd.NextDouble();
                xds[i][0][0] = a; xds[i][1][0] = 5 * a * a;
            }

            List <DenseVector[]> Tests = new List <DenseVector[]>();

            for (int i = 0; i < 100; i++)
            {
                Tests.Add(new DenseVector[2] {
                    new DenseVector(1), new DenseVector(1)
                });
                double a = rnd.NextDouble();
                Tests[i][0][0] = a; Tests[i][1][0] = a * a;
            }
            //////////データ用意終

            UseNN UseCNN = new UseNN();

            UseCNN.Add(new int[] { imgLoader.numberOfRows *imgLoader.numberOfColumns, 100, 100, 100, 100, 100, 100, 20, 20, 9 }
                       , new int[] { 0, 1, 2, 1, 2, 1, 2, 0, 0, 0 });
        }
Esempio n. 2
0
        /// <summary>
        /// MNIST のデータをロードする.
        /// 失敗した時は null を返す.
        /// </summary>
        /// <param name="path">画像データのパス.</param>
        /// <returns></returns>
        public static MNistImageLoader Load(string path)
        {
            // ファイルが存在しない
            if (File.Exists(path) == false)
            {
                return(null);
            }

            // バイト配列を分解する
            FileStream     stream = new FileStream(path, FileMode.Open);
            BinaryReaderBE reader = new BinaryReaderBE(stream);

            MNistImageLoader loader = new MNistImageLoader();

            loader.magicNumber     = reader.ReadInt32();
            loader.numberOfImages  = reader.ReadInt32();
            loader.numberOfRows    = reader.ReadInt32();
            loader.numberOfColumns = reader.ReadInt32();

            int pixelCount = loader.numberOfRows * loader.numberOfColumns;

            for (int i = 0; i < loader.numberOfImages; i++)
            {
                byte[] pixels = reader.ReadBytes(pixelCount);
                loader.bitmapList.Add(pixels);
            }

            reader.Close();
            return(loader);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //MNISTの読み込み
            MNistImageLoader imgLoader = MNistImageLoader.Load("train-images.idx3-ubyte");
            MNistLabelLoader lLoader   = MNistLabelLoader.Load("train-labels.idx1-ubyte");

            Console.WriteLine(imgLoader.numberOfImages);
            Console.WriteLine(lLoader.numberOfItems);
            int n = 3375;

            byte[] image = imgLoader.bitmapList[n];
            byte   label = lLoader.labelList[n];

            for (int i = 0; i < imgLoader.numberOfRows; i++)
            {
                for (int j = 0; j < imgLoader.numberOfColumns; j++)
                {
                    if (image[i * imgLoader.numberOfRows + j] >= 255)
                    {
                        Console.Write("#");
                    }
                    else
                    {
                        Console.Write(" ");
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine(label);
            Console.ReadLine();
        }