mlpack
parameters_visitor_impl.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_ANN_VISITOR_PARAMETERS_VISITOR_IMPL_HPP
13 #define MLPACK_METHODS_ANN_VISITOR_PARAMETERS_VISITOR_IMPL_HPP
14 
15 // In case it hasn't been included yet.
16 #include "parameters_visitor.hpp"
17 
18 namespace mlpack {
19 namespace ann {
20 
22 inline ParametersVisitor::ParametersVisitor(arma::mat& parameters) :
23  parameters(parameters)
24 {
25  /* Nothing to do here. */
26 }
27 
28 template<typename LayerType>
29 inline void ParametersVisitor::operator()(LayerType *layer) const
30 {
31  LayerParameters(layer, layer->OutputParameter());
32 }
33 
34 inline void ParametersVisitor::operator()(MoreTypes layer) const
35 {
36  layer.apply_visitor(*this);
37 }
38 
39 template<typename T, typename P>
40 inline typename std::enable_if<
41  !HasParametersCheck<T, P&(T::*)()>::value, void>::type
42 ParametersVisitor::LayerParameters(T* /* layer */, P& /* output */) const
43 {
44  /* Nothing to do here. */
45 }
46 
47 template<typename T, typename P>
48 inline typename std::enable_if<
49  HasParametersCheck<T, P&(T::*)()>::value, void>::type
50 ParametersVisitor::LayerParameters(T* layer, P& /* output */) const
51 {
52  parameters = layer->Parameters();
53 }
54 
55 } // namespace ann
56 } // namespace mlpack
57 
58 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void operator()(LayerType *layer) const
Set the parameters set.
Definition: parameters_visitor_impl.hpp:29
ParametersVisitor(arma::mat &parameters)
Store the parameters set into the given parameters matrix.
Definition: parameters_visitor_impl.hpp:22