weight_size_visitor.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_METHODS_ANN_VISITOR_WEIGHT_SIZE_VISITOR_HPP
15 #define MLPACK_METHODS_ANN_VISITOR_WEIGHT_SIZE_VISITOR_HPP
16 
18 
19 #include <boost/variant.hpp>
20 
21 namespace mlpack {
22 namespace ann {
23 
27 class WeightSizeVisitor : public boost::static_visitor<size_t>
28 {
29  public:
31  template<typename LayerType>
32  size_t operator()(LayerType* layer) const;
33 
34  private:
37  template<typename T, typename P>
38  typename std::enable_if<
39  !HasParametersCheck<T, P&(T::*)()>::value &&
40  !HasModelCheck<T>::value, size_t>::type
41  LayerSize(T* layer, P& output) const;
42 
45  template<typename T, typename P>
46  typename std::enable_if<
47  !HasParametersCheck<T, P&(T::*)()>::value &&
48  HasModelCheck<T>::value, size_t>::type
49  LayerSize(T* layer, P& output) const;
50 
53  template<typename T, typename P>
54  typename std::enable_if<
55  HasParametersCheck<T, P&(T::*)()>::value &&
56  !HasModelCheck<T>::value, size_t>::type
57  LayerSize(T* layer, P& output) const;
58 
61  template<typename T, typename P>
62  typename std::enable_if<
63  HasParametersCheck<T, P&(T::*)()>::value &&
64  HasModelCheck<T>::value, size_t>::type
65  LayerSize(T* layer, P& output) const;
66 };
67 
68 } // namespace ann
69 } // namespace mlpack
70 
71 // Include implementation.
72 #include "weight_size_visitor_impl.hpp"
73 
74 #endif
.hpp
Definition: add_to_po.hpp:21
WeightSizeVisitor returns the number of weights of the given module.
size_t operator()(LayerType *layer) const
Return the number of weights.