loss_visitor.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_ANN_VISITOR_LOSS_VISITOR_HPP
14 #define MLPACK_METHODS_ANN_VISITOR_LOSS_VISITOR_HPP
15 
17 
18 #include <boost/variant.hpp>
19 
20 namespace mlpack {
21 namespace ann {
22 
26 class LossVisitor : public boost::static_visitor<double>
27 {
28  public:
30  template<typename LayerType>
31  double operator()(LayerType* layer) const;
32 
33  private:
35  template<typename T>
36  typename std::enable_if<
37  !HasLoss<T, double(T::*)()>::value &&
38  !HasModelCheck<T>::value, double>::type
39  LayerLoss(T* layer) const;
40 
42  template<typename T>
43  typename std::enable_if<
44  HasLoss<T, double(T::*)()>::value &&
45  !HasModelCheck<T>::value, double>::type
46  LayerLoss(T* layer) const;
47 
49  template<typename T>
50  typename std::enable_if<
51  !HasLoss<T, double(T::*)()>::value &&
52  HasModelCheck<T>::value, double>::type
53  LayerLoss(T* layer) const;
54 
56  template<typename T>
57  typename std::enable_if<
58  HasLoss<T, double(T::*)()>::value &&
59  HasModelCheck<T>::value, double>::type
60  LayerLoss(T* layer) const;
61 };
62 
63 } // namespace ann
64 } // namespace mlpack
65 
66 // Include implementation.
67 #include "loss_visitor_impl.hpp"
68 
69 #endif
.hpp
Definition: add_to_po.hpp:21
LossVisitor exposes the Loss() method of the given module.
double operator()(LayerType *layer) const
Return the Loss.