public void calcOutputs(double[] inputs, double[] weights, double[] outputs) {
		int size = inputs.length;
		for (int i = 0; i < size; i++) {
			metaArray[i] = inputs[i];
		}
		int position = size;
		size = layers.length;
		int prePosition = 0;
		int weightsPosition = 0;
		int conPosition = weightsNum;
		for (int i = 1; i < size; i++) { // idem po slojevima
			int preLayer = layers[i - 1];
			int thisLayer = layers[i];
			for (int j = 0; j < thisLayer; j++) { // idem po neuronima u pojedinom sloju
				double net = weights[weightsPosition];
				if (i == 1) {
					for (int k = 0; k < contextSize; k++) {
						net += context[k] * weights[conPosition];
						conPosition++;
					}
				}
				weightsPosition++;
				for (int k = 0; k < preLayer; k++) { // zbrajam i množim sve težine za pojedini neuron
					net += weights[weightsPosition] * metaArray[k + prePosition];
					weightsPosition++;
				}
				metaArray[position + j] = transferFunctions[i - 1].valueAt(net);
			}
			if (i == 1) {
				for (int k = 0; k < contextSize; k++) {
					context[k] = metaArray[position + k];
				}
			}
			position += thisLayer;
			prePosition += preLayer;
		}
		size = outputs.length;
		for (int i = 0; i < size; i++) {
			outputs[size - 1 - i] = metaArray[neuronNum - 1 - i];
		}
	}