class OutputLayer extends AbstractLayer {

    @Override
    public void applyWeightChanges() {
        if (batchMode) { // if batch mode calculate average delta weights using batch samples (mini batch)
            deltaWeights.div(batchSize);
            Tensor.div(deltaBiases, batchSize);
        }

        // save current as prev delta weights (required for momentum)
        Tensor.copy(deltaWeights, prevDeltaWeights); 
        // apply(add) delta weights
        weights.add(deltaWeights);

        // save current as prev delta biases
        Tensor.copy(deltaBiases, prevDeltaBiases); 
        // apply(add) delta bias
        Tensor.add(biases, deltaBiases);

        if (batchMode) {    // for batch mode set all delta weights and biases to zero after applying changes. For online mode they are reseted in backward pass
            deltaWeights.fill(0);
            Tensor.fill(deltaBiases, 0);
        }
    }

    public  OutputLayer(int width);
    public  OutputLayer(int width, ActivationType activationFunction);
    public  OutputLayer(String[] labels);
    public  OutputLayer(String[] labels, ActivationType activationFunction);

}