mlpack
save_output_parameter_visitor_impl.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_ANN_VISITOR_SAVE_OUTPUT_PARAMETER_VISITOR_IMPL_HPP
13 #define MLPACK_METHODS_ANN_VISITOR_SAVE_OUTPUT_PARAMETER_VISITOR_IMPL_HPP
14 
15 // In case it hasn't been included yet.
17 
18 namespace mlpack {
19 namespace ann {
20 
23  std::vector<arma::mat>& parameter) : parameter(parameter)
24 {
25  /* Nothing to do here. */
26 }
27 
28 template<typename LayerType>
29 inline void SaveOutputParameterVisitor::operator()(LayerType* layer) const
30 {
31  OutputParameter(layer);
32 }
33 
34 inline void SaveOutputParameterVisitor::operator()(MoreTypes layer) const
35 {
36  layer.apply_visitor(*this);
37 }
38 
39 template<typename T>
40 inline typename std::enable_if<
41  !HasModelCheck<T>::value, void>::type
42 SaveOutputParameterVisitor::OutputParameter(T* layer) const
43 {
44  parameter.push_back(layer->OutputParameter());
45 }
46 
47 template<typename T>
48 inline typename std::enable_if<
49  HasModelCheck<T>::value, void>::type
50 SaveOutputParameterVisitor::OutputParameter(T* layer) const
51 {
52  parameter.push_back(layer->OutputParameter());
53 
54  for (size_t i = 0; i < layer->Model().size(); ++i)
55  {
56  boost::apply_visitor(SaveOutputParameterVisitor(parameter),
57  layer->Model()[i]);
58  }
59 }
60 
61 } // namespace ann
62 } // namespace mlpack
63 
64 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
SaveOutputParameterVisitor(std::vector< arma::mat > &parameter)
Save the output parameter into the given parameter set.
Definition: save_output_parameter_visitor_impl.hpp:22
void operator()(LayerType *layer) const
Save the output parameter.
Definition: save_output_parameter_visitor_impl.hpp:29