[mlpack-svn] master: Add implementation of the SoftmaxLayer class. (edb5ae2)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Tue Jan 6 14:20:42 EST 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/6b14d78fc09cb205ffa7a297f5e6310b2ad83e25...9147fd3ee8072669c18422de4ea6fbe8f964b423

>---------------------------------------------------------------

commit edb5ae27390f663f0532d8cf88d5464bdd2da99c
Author: Marcus Edel <marcus.edel at fu-berlin.de>
Date:   Sat Jan 3 14:07:53 2015 +0100

    Add implementation of the SoftmaxLayer class.


>---------------------------------------------------------------

edb5ae27390f663f0532d8cf88d5464bdd2da99c
 .../layer/{bias_layer.hpp => softmax_layer.hpp}    | 55 +++++++---------------
 1 file changed, 16 insertions(+), 39 deletions(-)

diff --git a/src/mlpack/methods/ann/layer/bias_layer.hpp b/src/mlpack/methods/ann/layer/softmax_layer.hpp
similarity index 61%
copy from src/mlpack/methods/ann/layer/bias_layer.hpp
copy to src/mlpack/methods/ann/layer/softmax_layer.hpp
index dde95dd..63af854 100644
--- a/src/mlpack/methods/ann/layer/bias_layer.hpp
+++ b/src/mlpack/methods/ann/layer/softmax_layer.hpp
@@ -1,44 +1,36 @@
 /**
- * @file bias_layer.hpp
+ * @file softmax_layer.hpp
  * @author Marcus Edel
  *
- * Definition of the BiasLayer class, which implements a standard bias
+ * Definition of the SoftmaxLayer class, which implements a standard network
  * layer.
  */
-#ifndef __MLPACK_METHOS_ANN_LAYER_BIAS_LAYER_HPP
-#define __MLPACK_METHOS_ANN_LAYER_BIAS_LAYER_HPP
+#ifndef __MLPACK_METHOS_ANN_LAYER_SOFTMAX_LAYER_HPP
+#define __MLPACK_METHOS_ANN_LAYER_SOFTMAX_LAYER_HPP
 
 #include <mlpack/core.hpp>
-#include <mlpack/methods/ann/layer/layer_traits.hpp>
-#include <mlpack/methods/ann/activation_functions/identity_function.hpp>
 
 namespace mlpack {
 namespace ann /** Artificial Neural Network. */ {
 
 /**
- * An implementation of a standard bias layer with a default value of one.
+ * An implementation of a standard softmax layer.
  *
- * @tparam ActivationFunction Activation function used for the bias layer
- * (Default IdentityFunction).
  * @tparam MatType Type of data (arma::mat or arma::sp_mat).
  * @tparam VecType Type of data (arma::colvec, arma::mat or arma::sp_mat).
  */
-template <
-    class ActivationFunction = IdentityFunction,
-    typename MatType = arma::mat,
-    typename VecType = arma::colvec
->
-class BiasLayer
+template <typename MatType = arma::mat, typename VecType = arma::colvec>
+class SoftmaxLayer
 
 {
  public:
   /**
-   * Create the BiasLayer object using the specified number of bias units.
+   * Create the SoftmaxLayer object using the specified number of neurons.
    *
    * @param layerSize The number of neurons.
    */
-  BiasLayer(const size_t layerSize) :
-      inputActivations(arma::ones<VecType>(layerSize)),
+  SoftmaxLayer(const size_t layerSize) :
+      inputActivations(arma::zeros<VecType>(layerSize)),
       delta(arma::zeros<VecType>(layerSize)),
       layerSize(layerSize)
   {
@@ -55,7 +47,8 @@ class BiasLayer
    */
   void FeedForward(const VecType& inputActivation, VecType& outputActivation)
   {
-    ActivationFunction::fn(inputActivation, outputActivation);
+    outputActivation = arma::trunc_exp(inputActivation);
+    outputActivation /= arma::accu(inputActivation);
   }
 
   /**
@@ -68,18 +61,15 @@ class BiasLayer
    * @param delta The calculating delta using the partial derivative of the
    * error with respect to a weight.
    */
-  void FeedBackward(const VecType& inputActivation,
+  void FeedBackward(const VecType& /* unused */,
                     const VecType& error,
                     VecType& delta)
   {
-    VecType derivative;
-    ActivationFunction::deriv(inputActivation, derivative);
-
-    delta = error % derivative;
+    delta = error;
   }
 
   //! Get the input activations.
-  const VecType& InputActivation() const { return inputActivations; }
+  VecType& InputActivation() const { return inputActivations; }
   //  //! Modify the input activations.
   VecType& InputActivation() { return inputActivations; }
 
@@ -107,20 +97,7 @@ class BiasLayer
 
   //! Locally-stored number of neurons.
   size_t layerSize;
-}; // class BiasLayer
-
-//! Layer traits for the bias layer.
-template<>
-class LayerTraits<BiasLayer<> >
-{
- public:
-  /**
-   * If true, then the layer is binary.
-   */
-  static const bool IsBinary = false;
-  static const bool IsOutputLayer = false;
-  static const bool IsBiasLayer = true;
-};
+}; // class SoftmaxLayer
 
 }; // namespace ann
 }; // namespace mlpack




More information about the mlpack-git mailing list