public CifarData(bool isCifar100 = false, bool isFineLabel = false) { CIFARDataLoader cifarDataLoader = new CIFARDataLoader(isCifar100); //トレーニングデータ this.X = new NdArray[cifarDataLoader.TrainData.Length]; //トレーニングデータラベル this.Tx = new NdArray[cifarDataLoader.TrainData.Length]; //Cifar100のときは100クラス、簡素であれば20クラス、Cifar10のときは10クラス分類 ClassCount = isCifar100 ? isFineLabel ? 100 : 20 : 10; for (int i = 0; i < cifarDataLoader.TrainData.Length; i++) { Real[] x = new Real[3 * 32 * 32]; for (int j = 0; j < cifarDataLoader.TrainData[i].Length; j++) { x[j] = cifarDataLoader.TrainData[i][j] / 255.0; } this.X[i] = new NdArray(x, new[] { 3, 32, 32 }); if (isCifar100 & isFineLabel) { this.Tx[i] = new NdArray(new[] { (Real)cifarDataLoader.TrainFineLabel[i] }); } else { this.Tx[i] = new NdArray(new[] { (Real)cifarDataLoader.TrainLabel[i] }); } } //教師データ this.Y = new NdArray[cifarDataLoader.TestData.Length]; //教師データラベル this.Ty = new NdArray[cifarDataLoader.TestData.Length]; for (int i = 0; i < cifarDataLoader.TestData.Length; i++) { Real[] y = new Real[3 * 32 * 32]; for (int j = 0; j < cifarDataLoader.TestData[i].Length; j++) { y[j] = cifarDataLoader.TestData[i][j] / 255.0; } this.Y[i] = new NdArray(y, new[] { 3, 32, 32 }); if (isCifar100 & isFineLabel) { this.Ty[i] = new NdArray(new[] { (Real)cifarDataLoader.TestFineLabel[i] }); } else { this.Ty[i] = new NdArray(new[] { (Real)cifarDataLoader.TrainLabel[i] }); } } }
public CifarData(bool isCifar100 = false, bool isFineLabel = false) { CIFARDataLoader cifarDataLoader = new CIFARDataLoader(isCifar100); //訓練用データ Real[][] x = new Real[cifarDataLoader.TrainData.Length][]; Real[] xLabel = new Real[cifarDataLoader.TrainData.Length]; //Cifar100のときは100クラス、簡素であれば20クラス、Cifar10のときは10クラス分類 ClassCount = isCifar100 ? isFineLabel ? 100 : 20 : 10; for (int i = 0; i < cifarDataLoader.TrainData.Length; i++) { x[i] = new Real[3 * 32 * 32]; for (int j = 0; j < cifarDataLoader.TrainData[i].Length; j++) { x[i][j] = cifarDataLoader.TrainData[i][j] / 255.0; } if (isCifar100 & isFineLabel) { xLabel[i] = cifarDataLoader.TrainFineLabel[i]; } else { xLabel[i] = cifarDataLoader.TrainLabel[i]; } } this.Train = new LabeledDataSet(x, xLabel, new[] { 3, 32, 32 }); //評価用データ Real[][] y = new Real[cifarDataLoader.TestData.Length][]; Real[] yLabel = new Real[cifarDataLoader.TestData.Length]; for (int i = 0; i < cifarDataLoader.TestData.Length; i++) { y[i] = new Real[3 * 32 * 32]; for (int j = 0; j < cifarDataLoader.TestData[i].Length; j++) { y[i][j] = cifarDataLoader.TestData[i][j] / 255.0; } if (isCifar100 & isFineLabel) { yLabel[i] = cifarDataLoader.TestFineLabel[i]; } else { yLabel[i] = cifarDataLoader.TestLabel[i]; } } this.Eval = new LabeledDataSet(y, yLabel, new[] { 3, 32, 32 }); }