public double[] train(double[] scans){
		
		double value;
		
		getNext(scans);
		
		for(int i = 0; i < _output.length; i++){
			_outputDelta[i] = dTransfer(_output[i]) * (scans[i + _inputCount] - _output[i]);
		}
		
		for(int i = 0; i < _hiddenLayer.length; i++){
			value = 0;
			for(int j = 0; j < _output.length; j++){
				value += _outputDelta[j] * _outputWeights[j][i];
			}
			_hiddenDelta[i] = dTransfer(_hiddenLayer[i]) * value;
		}
		for(int i = 0; i < _output.length; i++){
			for(int j = 0; j < _hiddenLayer.length; j++){
				_outputWeights[i][j] += (_outputDelta[i] * _hiddenLayer[j] * _mu);
			}
		}
		
		for(int i = 0; i < _hiddenLayer.length; i++){
			for(int j = 0; j < _inputCount; j++){
				_hiddenWeights[i][j] += (_hiddenDelta[i] * scans[j] * _mu);
			}
		}
		return _output;
	}