12 #ifndef MLPACK_METHODS_ANN_VISITOR_WEIGHT_SIZE_VISITOR_IMPL_HPP 13 #define MLPACK_METHODS_ANN_VISITOR_WEIGHT_SIZE_VISITOR_IMPL_HPP 22 template<
typename LayerType>
25 return LayerSize(layer, layer->OutputParameter());
30 return layer.apply_visitor(*
this);
33 template<
typename T,
typename P>
34 inline typename std::enable_if<
35 !HasParametersCheck<T, P&(T::*)()>::value &&
36 !HasModelCheck<T>::value,
size_t>::type
37 WeightSizeVisitor::LayerSize(T* , P& )
const 42 template<
typename T,
typename P>
43 inline typename std::enable_if<
44 !HasParametersCheck<T, P&(T::*)()>::value &&
45 HasModelCheck<T>::value,
size_t>::type
46 WeightSizeVisitor::LayerSize(T* layer, P& )
const 49 for (
size_t i = 0; i < layer->Model().size(); ++i)
57 template<
typename T,
typename P>
58 inline typename std::enable_if<
59 HasParametersCheck<T, P&(T::*)()>::value &&
60 !HasModelCheck<T>::value,
size_t>::type
61 WeightSizeVisitor::LayerSize(T* layer, P& )
const 63 return layer->Parameters().n_elem;
66 template<
typename T,
typename P>
67 inline typename std::enable_if<
68 HasParametersCheck<T, P&(T::*)()>::value &&
69 HasModelCheck<T>::value,
size_t>::type
70 WeightSizeVisitor::LayerSize(T* layer, P& )
const 72 size_t weights = layer->Parameters().n_elem;
73 for (
size_t i = 0; i < layer->Model().size(); ++i)
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
WeightSizeVisitor returns the number of weights of the given module.
Definition: weight_size_visitor.hpp:27
size_t operator()(LayerType *layer) const
Return the number of weights.
Definition: weight_size_visitor_impl.hpp:23