mlpack  master
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 
19 
20 #include <boost/variant.hpp>
21 
22 namespace mlpack {
23 namespace ann {
24 
28 class WeightSizeVisitor : public boost::static_visitor<size_t>
29 {
30  public:
32  template<typename LayerType>
33  size_t operator()(LayerType* layer) const;
34 
35  private:
38  template<typename T, typename P>
39  typename std::enable_if<
40  !HasParametersCheck<T, P&(T::*)()>::value &&
41  !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, size_t>::type
42  LayerSize(T* layer, P& output) const;
43 
46  template<typename T, typename P>
47  typename std::enable_if<
48  !HasParametersCheck<T, P&(T::*)()>::value &&
49  HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, size_t>::type
50  LayerSize(T* layer, P& output) const;
51 
54  template<typename T, typename P>
55  typename std::enable_if<
56  HasParametersCheck<T, P&(T::*)()>::value &&
57  !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, size_t>::type
58  LayerSize(T* layer, P& output) const;
59 
62  template<typename T, typename P>
63  typename std::enable_if<
64  HasParametersCheck<T, P&(T::*)()>::value &&
65  HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value, size_t>::type
66  LayerSize(T* layer, P& output) const;
67 };
68 
69 } // namespace ann
70 } // namespace mlpack
71 
72 // Include implementation.
73 #include "weight_size_visitor_impl.hpp"
74 
75 #endif
size_t operator()(LayerType *layer) const
Return the number of weights.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
WeightSizeVisitor returns the number of weights of the given module.
std::enable_if< !HasParametersCheck< T, P &(T::*)()>::value &&!HasModelCheck< T, std::vector< LayerTypes > &(T::*)()>::value, size_t >::type LayerSize(T *layer, P &output) const
If the module doesn&#39;t implement the Parameters() or Model() function return 0.