/// <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); }
/// <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); }