public boolean loadSamples(){
		File sampleDir = null;
		File[] dirListing = null;
		Mat sample;
		
		// no way to tell if a file is already in the matrix so just start over on reloads
		inputs = null; 
		outputs = null;
		
		// Setting up output matrix for each possible die value
		Mat m1 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m1.put(0, 0, 1);
		Mat m2 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m2.put(0, 1, 1);
		Mat m3 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m3.put(0, 2, 1);
		Mat m4 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m4.put(0, 3, 1);
		Mat m5 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m5.put(0, 4, 1);
		Mat m6 = Mat.zeros(1, 6, CvType.CV_32FC1);
		m6.put(0, 5, 1);
		
		// store them for easy access later 
		Mat[] out = new Mat[]{m1, m2, m3, m4, m5, m6};
		
		
		for (int dieValue = 1; dieValue <= 6; dieValue++) {
			sampleDir = new File(dir.getAbsolutePath() + "/" + dieValue
					+ "/regions/" + regSize);
			dirListing = sampleDir.listFiles();
			System.out.println(sampleDir);

			if (dirListing != null) {
				for (File img : dirListing) {
					sample = Highgui.imread(img.getAbsolutePath());
					if (greyScale)
						Imgproc.cvtColor(sample, sample, Imgproc.COLOR_RGB2GRAY);
					sample = sample.reshape(1, 1);
					if (inputs == null){
						inputs = sample; // Start with the very first sample
						outputs = out[dieValue-1].clone();
					}
					else{
						inputs.push_back(sample); // append all the others
						outputs.push_back(out[dieValue-1].clone());
					}
				}
			} else {
				System.err.println("Sample die images missing value = " + dieValue);
				return false;
			}
		}
		//inputs must be Floating point for ANN training 
		inputs.convertTo(inputs, CvType.CV_32FC1);
		return true;
	}