package org.neuroph.samples.convolution.mnist;
import java.io.IOException;
import java.util.List;
import org.neuroph.core.data.DataSet;
import org.neuroph.core.data.DataSetRow;
/**
* Provides methods for loading MNIST dataset (training and test set)
*
* TODO: reorganizuj tako da imamo samo jedu metodu loadDataSet kojoj se
* prosledjuje naziv i koja ucitava i datas et i test set
* a ne da postoje dve posebne metode za to koje rade potpuno istu stvar
*
* @author Boris Fulurija
* @author Zoran Sevarac
*/
public class MNISTDataSet {
public static final String TRAIN_LABEL_NAME = "data_sets/train-labels.idx1-ubyte";
public static final String TRAIN_IMAGE_NAME = "data_sets/train-images.idx3-ubyte";
public static final String TEST_LABEL_NAME = "data_sets/t10k-labels.idx1-ubyte";
public static final String TEST_IMAGE_NAME = "data_sets/t10k-images.idx3-ubyte";
public static DataSet createFromFile(String labelPath, String imagePath, int sampleCount) throws IOException {
List mnistImages = MNISTImage.loadDigitImages(labelPath, imagePath);
DataSet dataSet = createDataSet(mnistImages, sampleCount);
return dataSet;
}
// TODO; remove sampleCount param its ame as list count
private static DataSet createDataSet(List imageList, int sampleCount) {
int pixelCount = imageList.get(0).getSize();
int totalSize = 1024;
DataSet dataSet = new DataSet(totalSize, 10);
for (int i = 0; i < sampleCount; i++) {
MNISTImage dImage = imageList.get(i);
double[] input = new double[totalSize];
double[] output = new double[10];
for (int j = 0; j < 10; j++) {
output[j] = 0;
}
for (int j = 0; j < totalSize; j++) {
input[j] = 0;
}
output[dImage.getLabel()] = 1;
byte[] imageData = dImage.getData();
int k = 66;
for (int j = 0; j < pixelCount; j++) {
if ((imageData[j] & 0xff) > 0)
input[k++] = 255;
else
k++;
if (j % 28 == 27)
k += 4;
}
DataSetRow row = new DataSetRow(input, output);
dataSet.addRow(row);
}
dataSet.setColumnName(1024, "0");
dataSet.setColumnName(1025, "1");
dataSet.setColumnName(1026, "2");
dataSet.setColumnName(1027, "3");
dataSet.setColumnName(1028, "4");
dataSet.setColumnName(1029, "5");
dataSet.setColumnName(1030, "6");
dataSet.setColumnName(1031, "7");
dataSet.setColumnName(1032, "8");
dataSet.setColumnName(1033, "9");
return dataSet;
}
}
Ads help maintain this website.