13 #ifndef MLPACK_METHODS_ANN_VISITOR_GRADIENT_SET_VISITOR_HPP 14 #define MLPACK_METHODS_ANN_VISITOR_GRADIENT_SET_VISITOR_HPP 19 #include <boost/variant.hpp> 34 template<
typename LayerType>
46 typename std::enable_if<
47 HasGradientCheck<T, arma::mat&(T::*)()>::value &&
48 !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value,
size_t>::type
53 typename std::enable_if<
54 !HasGradientCheck<T, arma::mat&(T::*)()>::value &&
55 HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value,
size_t>::type
61 typename std::enable_if<
62 HasGradientCheck<T, arma::mat&(T::*)()>::value &&
63 HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value,
size_t>::type
68 template<
typename T,
typename P>
69 typename std::enable_if<
70 !HasGradientCheck<T, P&(T::*)()>::value &&
71 !HasModelCheck<T, std::vector<LayerTypes>&(T::*)()>::value,
size_t>::type
79 #include "gradient_set_visitor_impl.hpp"
Linear algebra utility functions, generally performed on matrices or vectors.
GradientSetVisitor update the gradient parameter given the gradient set.
arma::mat && gradient
The gradient set.
GradientSetVisitor(arma::mat &&gradient, size_t offset=0)
Update the gradient parameter given the gradient set.
size_t offset
The gradient offset.
size_t operator()(LayerType *layer) const
Update the gradient parameter.
std::enable_if< HasGradientCheck< T, arma::mat &(T::*)()>::value &&!HasModelCheck< T, std::vector< LayerTypes > &(T::*)()>::value, size_t >::type LayerGradients(T *layer, arma::mat &input) const
Update the gradient if the module implements the Gradient() function.