public List<Double> process(List<Double> inputs) throws NNException {
		resetNeurons();
		if (inputs.size() != numberOfInputs()) {
			throw new NNException("Number of inputs doesn't match the number of input neurons");
		}
		for (int i = 0; i < inputs.size(); i++) {
			double inputSignal = inputs.get(i);
			inputLayer.get(i).input(inputSignal);
		}
		List<Double> results = new ArrayList<>();
		for (OutputNeuron outputNeuron : outputLayer) {
			results.add(outputNeuron.signal);
		}
		return results;
	}