Source: layers/softmax.js

var util = require('util');
var SoftmaxNeuron = require('../neurons').SoftmaxNeuron;
var Layer = require('./basic');
var _ = require('underscore');

/**
TODO doc SoftmaxLayer

@class
@implements Layer
*/
function SoftmaxLayer (size, input_size) {
  return Layer.call(this, size, input_size, SoftmaxNeuron);
}

util.inherits(SoftmaxLayer, Layer);


/**
TODO doc SoftmaxLayer.process

@function
@param {array} inputs - an array of input bits
@returns {array} array of processed output bits
*/
SoftmaxLayer.prototype.process = function (inputs) {
  var results = this.neurons().map(function (neuron, j) {
    return neuron.process(inputs, j);
  });
  var sum = results.reduce(function (a, b) { return a + b; });
  return results.map(function (result) { return result / sum; });
};

module.exports = SoftmaxLayer;