private List<List<Double>> getPredOutcome(double[] features) throws PerceptronException{
		int numPossibleOutputs = nodesList.get((nodesList.size()-1)).size();
		List<List<Double>> activations = new ArrayList<List<Double>>();

		
		//initialize the arraylist of the lists of activations
		for(int i = 0; i < numHiddenLayers + 1; i++){
			activations.add(new ArrayList<Double>());
		}
		
		for(int i = 0; i < nodesList.size(); i++){
			if(i == 0){
				for(int j = 0; j < numHiddenNodes; j++){
					PerceptronNode workingNode = nodesList.get(i).get(j);
					activations.get(i).add(workingNode.getOutput(features));
				}
			}
			else if(i < numHiddenLayers){
				for(int j = 0; j < numHiddenNodes; j++){
					PerceptronNode workingNode = nodesList.get(i).get(j);
					List<Double> tempActList = activations.get(i-1);
					double[] tempActArray = new double[tempActList.size()];
					for(int k = 0; k < tempActList.size(); k++){
						tempActArray[k] = tempActList.get(i);
					}
					activations.get(i).add(workingNode.getOutput(tempActArray));
				}
			}
			else{
				for(int j = 0; j < numPossibleOutputs; j++){
					PerceptronNode workingNode = nodesList.get(i).get(j);
					List<Double> tempActList = activations.get(i-1);
					double[] tempActArray = new double[tempActList.size()];
					for(int k = 0; k < tempActList.size(); k++){
						tempActArray[k] = tempActList.get(i);
					}
					activations.get(i).add(workingNode.getOutput(tempActArray));
				}
			}
		}
		
		return activations;
	}