mlpack  master
add_visitor.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_ANN_VISITOR_ADD_VISITOR_HPP
14 #define MLPACK_METHODS_ANN_VISITOR_ADD_VISITOR_HPP
15 
18 
19 #include <boost/variant.hpp>
20 
21 namespace mlpack {
22 namespace ann {
23 
27 class AddVisitor : public boost::static_visitor<void>
28 {
29  public:
31  template<typename T>
33 
35  template<typename LayerType>
36  void operator()(LayerType* layer) const;
37 
38  private:
41 
43  template<typename T>
44  typename std::enable_if<
45  HasAddCheck<T, void(T::*)(LayerTypes)>::value, void>::type
46  LayerAdd(T* layer) const;
47 
49  template<typename T>
50  typename std::enable_if<
51  !HasAddCheck<T, void(T::*)(LayerTypes)>::value, void>::type
52  LayerAdd(T* layer) const;
53 };
54 
55 } // namespace ann
56 } // namespace mlpack
57 
58 // Include implementation.
59 #include "add_visitor_impl.hpp"
60 
61 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
LayerTypes newLayer
The layer that should be added.
Definition: add_visitor.hpp:40
AddVisitor(T newLayer)
Exposes the Add() method of the given module.
void operator()(LayerType *layer) const
Exposes the Add() method.
boost::variant< Add< arma::mat, arma::mat > *, AddMerge< arma::mat, arma::mat > *, BaseLayer< LogisticFunction, arma::mat, arma::mat > *, BaseLayer< IdentityFunction, arma::mat, arma::mat > *, BaseLayer< TanhFunction, arma::mat, arma::mat > *, BaseLayer< RectifierFunction, arma::mat, arma::mat > *, Concat< arma::mat, arma::mat > *, ConcatPerformance< NegativeLogLikelihood< arma::mat, arma::mat >, arma::mat, arma::mat > *, Constant< arma::mat, arma::mat > *, Convolution< NaiveConvolution< ValidConvolution >, NaiveConvolution< FullConvolution >, NaiveConvolution< ValidConvolution >, arma::mat, arma::mat > *, DropConnect< arma::mat, arma::mat > *, Dropout< arma::mat, arma::mat > *, Glimpse< arma::mat, arma::mat > *, HardTanH< arma::mat, arma::mat > *, Join< arma::mat, arma::mat > *, LeakyReLU< arma::mat, arma::mat > *, Linear< arma::mat, arma::mat > *, LinearNoBias< arma::mat, arma::mat > *, LogSoftMax< arma::mat, arma::mat > *, Lookup< arma::mat, arma::mat > *, LSTM< arma::mat, arma::mat > *, MaxPooling< arma::mat, arma::mat > *, MeanPooling< arma::mat, arma::mat > *, MeanSquaredError< arma::mat, arma::mat > *, MultiplyConstant< arma::mat, arma::mat > *, NegativeLogLikelihood< arma::mat, arma::mat > *, PReLU< arma::mat, arma::mat > *, Recurrent< arma::mat, arma::mat > *, RecurrentAttention< arma::mat, arma::mat > *, ReinforceNormal< arma::mat, arma::mat > *, Select< arma::mat, arma::mat > *, Sequential< arma::mat, arma::mat > *, VRClassReward< arma::mat, arma::mat > * > LayerTypes
AddVisitor exposes the Add() method of the given module.
Definition: add_visitor.hpp:27
std::enable_if< HasAddCheck< T, void(T::*)(LayerTypes)>::value, void >::type LayerAdd(T *layer) const
Only add the layer if the module implements the Add() function.