13 #ifndef MLPACK_METHODS_ANN_FFN_HPP
14 #define MLPACK_METHODS_ANN_FFN_HPP
34 #include <ensmallen.hpp>
48 typename OutputLayerType = NegativeLogLikelihood<>,
49 typename InitializationRuleType = RandomInitialization,
50 typename... CustomLayers
71 FFN(OutputLayerType outputLayer = OutputLayerType(),
72 InitializationRuleType initializeRule = InitializationRuleType());
95 template<
typename OptimizerType>
96 typename std::enable_if<
97 HasMaxIterations<OptimizerType, size_t&(OptimizerType::*)()>
109 template<
typename OptimizerType>
110 typename std::enable_if<
111 !HasMaxIterations<OptimizerType, size_t&(OptimizerType::*)()>
135 template<
typename OptimizerType,
typename... CallbackTypes>
136 double Train(arma::mat predictors,
138 OptimizerType& optimizer,
139 CallbackTypes&&... callbacks);
161 template<
typename OptimizerType = ens::RMSProp,
typename... CallbackTypes>
162 double Train(arma::mat predictors,
164 CallbackTypes&&... callbacks);
177 void Predict(arma::mat predictors, arma::mat& results);
186 template<
typename PredictorsType,
typename ResponsesType>
187 double Evaluate(
const PredictorsType& predictors,
188 const ResponsesType& responses);
198 double Evaluate(
const arma::mat& parameters);
213 double Evaluate(
const arma::mat& parameters,
215 const size_t batchSize,
216 const bool deterministic);
230 double Evaluate(
const arma::mat& parameters,
232 const size_t batchSize);
242 template<
typename GradType>
257 template<
typename GradType>
261 const size_t batchSize);
275 void Gradient(
const arma::mat& parameters,
278 const size_t batchSize);
291 template <
class LayerType,
class... Args>
292 void Add(Args... args) { network.push_back(
new LayerType(args...)); }
320 const arma::mat&
Responses()
const {
return responses; }
335 template<
typename Archive>
336 void serialize(Archive& ar,
const unsigned int );
348 template<
typename PredictorsType,
typename ResponsesType>
349 void Forward(
const PredictorsType& inputs, ResponsesType& results);
362 template<
typename PredictorsType,
typename ResponsesType>
363 void Forward(
const PredictorsType& inputs ,
364 ResponsesType& results,
379 template<
typename PredictorsType,
380 typename TargetsType,
381 typename GradientsType>
382 double Backward(
const PredictorsType& inputs,
383 const TargetsType& targets,
384 GradientsType& gradients);
394 template<
typename InputType>
395 void Forward(
const InputType& input);
404 void ResetData(arma::mat predictors, arma::mat responses);
416 template<
typename InputType>
417 void Gradient(
const InputType& input);
423 void ResetDeterministic();
428 void ResetGradients(arma::mat& gradient);
435 void Swap(
FFN& network);
438 OutputLayerType outputLayer;
442 InitializationRuleType initializeRule;
454 std::vector<
LayerTypes<CustomLayers...> > network;
457 arma::mat predictors;
502 arma::mat inputParameter;
505 arma::mat outputParameter;
516 typename InitializerType,
529 namespace serialization {
531 template<
typename OutputLayerType,
532 typename InitializationRuleType,
535 mlpack::ann::FFN<OutputLayerType, InitializationRuleType, CustomLayer...>>
537 BOOST_STATIC_CONSTANT(
int, value = 2);
544 #include "ffn_impl.hpp"
std::vector< LayerTypes< CustomLayers...> > & Model()
Modify the network model.
DeleteVisitor executes the destructor of the instantiated object.
void Gradient(const arma::mat ¶meters, const size_t begin, arma::mat &gradient, const size_t batchSize)
Evaluate the gradient of the feedforward network with the given parameters, and with respect to only ...
OutputHeightVisitor exposes the OutputHeight() method of the given module.
arma::mat & Responses()
Modify the matrix of responses to the input data points.
void serialize(Archive &ar, const unsigned int)
Serialize the model.
void Predict(arma::mat predictors, arma::mat &results)
Predict the responses to a given set of predictors.
BaseLayer< ActivationFunction, InputDataType, OutputDataType > CustomLayer
Standard Sigmoid layer.
LossVisitor exposes the Loss() method of the given module.
double Train(arma::mat predictors, arma::mat responses, OptimizerType &optimizer, CallbackTypes &&...callbacks)
Train the feedforward network on the given input data using the given optimizer.
std::enable_if< HasMaxIterations< OptimizerType, size_t &(OptimizerType::*)()>::value, void >::type WarnMessageMaxIterations(OptimizerType &optimizer, size_t samples) const
Check if the optimizer has MaxIterations() parameter, if it does then check if it's value is less tha...
This visitor is to support copy constructor for neural network module.
The core includes that mlpack expects; standard C++ includes and Armadillo.
WeightSizeVisitor returns the number of weights of the given module.
const arma::mat & Predictors() const
Get the matrix of data points (predictors).
boost::variant< Add< arma::mat, arma::mat > *, AddMerge< arma::mat, arma::mat > *, AtrousConvolution< NaiveConvolution< ValidConvolution >, NaiveConvolution< FullConvolution >, NaiveConvolution< ValidConvolution >, arma::mat, arma::mat > *, BaseLayer< LogisticFunction, arma::mat, arma::mat > *, BaseLayer< IdentityFunction, arma::mat, arma::mat > *, BaseLayer< TanhFunction, arma::mat, arma::mat > *, BaseLayer< RectifierFunction, arma::mat, arma::mat > *, BaseLayer< SoftplusFunction, arma::mat, arma::mat > *, BatchNorm< arma::mat, arma::mat > *, BilinearInterpolation< arma::mat, arma::mat > *, Concat< arma::mat, arma::mat > *, Concatenate< arma::mat, arma::mat > *, ConcatPerformance< NegativeLogLikelihood< arma::mat, arma::mat >, arma::mat, arma::mat > *, Constant< arma::mat, arma::mat > *, Convolution< NaiveConvolution< ValidConvolution >, NaiveConvolution< FullConvolution >, NaiveConvolution< ValidConvolution >, arma::mat, arma::mat > *, TransposedConvolution< NaiveConvolution< ValidConvolution >, NaiveConvolution< ValidConvolution >, NaiveConvolution< ValidConvolution >, arma::mat, arma::mat > *, DropConnect< arma::mat, arma::mat > *, Dropout< arma::mat, arma::mat > *, AlphaDropout< arma::mat, arma::mat > *, ELU< arma::mat, arma::mat > *, FlexibleReLU< arma::mat, arma::mat > *, Glimpse< arma::mat, arma::mat > *, HardTanH< arma::mat, arma::mat > *, Highway< arma::mat, arma::mat > *, Join< arma::mat, arma::mat > *, LayerNorm< arma::mat, arma::mat > *, LeakyReLU< arma::mat, arma::mat > *, CReLU< arma::mat, arma::mat > *, Linear< arma::mat, arma::mat, NoRegularizer > *, LinearNoBias< arma::mat, arma::mat, NoRegularizer > *, LogSoftMax< arma::mat, arma::mat > *, Lookup< arma::mat, arma::mat > *, LSTM< arma::mat, arma::mat > *, GRU< arma::mat, arma::mat > *, FastLSTM< arma::mat, arma::mat > *, MaxPooling< arma::mat, arma::mat > *, MeanPooling< arma::mat, arma::mat > *, MiniBatchDiscrimination< arma::mat, arma::mat > *, MultiplyConstant< arma::mat, arma::mat > *, MultiplyMerge< arma::mat, arma::mat > *, NegativeLogLikelihood< arma::mat, arma::mat > *, Padding< arma::mat, arma::mat > *, PReLU< arma::mat, arma::mat > *, WeightNorm< arma::mat, arma::mat > *, CELU< arma::mat, arma::mat > *, MoreTypes, CustomLayers *... > LayerTypes
FFN & operator=(FFN)
Copy/move assignment operator.
void Shuffle()
Shuffle the order of function visitation.
~FFN()
Destructor to release allocated memory.
void Forward(const PredictorsType &inputs, ResponsesType &results)
Perform the forward pass of the data in real batch mode.
ResetVisitor executes the Reset() function.
double EvaluateWithGradient(const arma::mat ¶meters, GradType &gradient)
Evaluate the feedforward network with the given parameters.
OutputParameterVisitor exposes the output parameter of the given module.
void Add(LayerTypes< CustomLayers...> layer)
const arma::mat & Parameters() const
Return the initial point for the optimization.
size_t NumFunctions() const
Return the number of separable functions (the number of predictor points).
arma::mat & Parameters()
Modify the initial point for the optimization.
void ResetParameters()
Reset the module infomration (weights/parameters).
arma::mat & Predictors()
Modify the matrix of data points (predictors).
DeltaVisitor exposes the delta parameter of the given module.
The implementation of the standard GAN module.
const arma::mat & Responses() const
Get the matrix of responses to the input data points.
const std::vector< LayerTypes< CustomLayers...> > & Model() const
Get the network model.
Implementation of a standard feed forward network.
OutputWidthVisitor exposes the OutputWidth() method of the given module.
double Evaluate(const PredictorsType &predictors, const ResponsesType &responses)
Evaluate the feedforward network with the given predictors and responses.
FFN(OutputLayerType outputLayer=OutputLayerType(), InitializationRuleType initializeRule=InitializationRuleType())
Create the FFN object.