Ejemplo n.º 1
0
        /// <summary>
        /// MNIST のデータをロードする.
        /// 失敗した時は null を返す.
        /// </summary>
        /// <param name="path">画像データのパス.</param>
        /// <returns></returns>
        public static MnistImageLoader Load(string path)
        {
            // ファイルが存在しない
            if (File.Exists(path) == false)
            {
                return(null);
            }

            MnistImageLoader loader = new MnistImageLoader();

            // バイト配列を分解する
            using (FileStream inStream = new FileStream(path, FileMode.Open, FileAccess.Read))
                using (GZipStream decompStream = new GZipStream(inStream, CompressionMode.Decompress))
                {
                    BinaryReaderBE reader = new BinaryReaderBE(decompStream);

                    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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// MNIST のラベルファイルをロードする.
        /// 失敗した時は null を返す.
        /// </summary>
        /// <param name="path">ラベルファイルのパス.</param>
        /// <returns></returns>
        public static MnistLabelLoader Load(string path)
        {
            // ファイルが存在しない
            if (File.Exists(path) == false)
            {
                return(null);
            }

            MnistLabelLoader loader = new MnistLabelLoader();

            using (FileStream inStream = new FileStream(path, FileMode.Open, FileAccess.Read))
                using (GZipStream decompStream = new GZipStream(inStream, CompressionMode.Decompress))
                {
                    // バイト配列を分解する
                    BinaryReaderBE reader = new BinaryReaderBE(decompStream);

                    loader.magicNumber   = reader.ReadInt32();
                    loader.numberOfItems = reader.ReadInt32();
                    loader.labelList     = reader.ReadBytes(loader.numberOfItems);

                    reader.Close();
                }

            return(loader);
        }