13#ifndef MLPACK_METHODS_ANN_BRNN_HPP
14#define MLPACK_METHODS_ANN_BRNN_HPP
30#include <ensmallen.hpp>
42 typename OutputLayerType = NegativeLogLikelihood<>,
43 typename MergeLayerType = Concat<>,
44 typename MergeOutputType = LogSoftMax<>,
45 typename InitializationRuleType = RandomInitialization,
46 typename... CustomLayers
55 InitializationRuleType,
76 const bool single =
false,
77 OutputLayerType outputLayer = OutputLayerType(),
78 MergeLayerType* mergeLayer =
new MergeLayerType(),
79 MergeOutputType* mergeOutput =
new MergeOutputType(),
80 InitializationRuleType initializeRule = InitializationRuleType());
93 template<
typename OptimizerType>
94 typename std::enable_if<
95 HasMaxIterations<OptimizerType,
size_t&(OptimizerType::*)()>
107 template<
typename OptimizerType>
108 typename std::enable_if<
109 !HasMaxIterations<OptimizerType,
size_t&(OptimizerType::*)()>
136 template<
typename OptimizerType>
138 arma::cube responses,
139 OptimizerType& optimizer);
164 template<
typename OptimizerType = ens::StandardSGD>
165 double Train(arma::cube predictors, arma::cube responses);
188 const size_t batchSize = 256);
205 const size_t batchSize,
206 const bool deterministic);
222 const size_t batchSize);
237 template<
typename GradType>
241 const size_t batchSize);
259 const size_t batchSize);
272 template <
class LayerType,
class... Args>
291 const size_t&
Rho()
const {
return rho; }
293 size_t&
Rho() {
return rho; }
296 const arma::cube&
Responses()
const {
return responses; }
318 template<
typename Archive>
327 void ResetDeterministic();
333 OutputLayerType outputLayer;
343 InitializationRuleType initializeRule;
361 arma::cube predictors;
364 arma::cube responses;
382 std::vector<arma::mat> forwardRNNOutputParameter;
385 std::vector<arma::mat> backwardRNNOutputParameter;
403 arma::mat forwardGradient;
406 arma::mat backwardGradient;
409 arma::mat totalGradient;
412 RNN<OutputLayerType, InitializationRuleType, CustomLayers...> forwardRNN;
415 RNN<OutputLayerType, InitializationRuleType, CustomLayers...> backwardRNN;
423namespace serialization {
425template<
typename OutputLayerType,
426 typename InitializationRuleType,
427 typename MergeLayerType,
428 typename MergeOutputType,
431 mlpack::ann::BRNN<OutputLayerType, MergeLayerType, MergeOutputType,
432 InitializationRuleType, CustomLayer...>>
441#include "brnn_impl.hpp"
Implementation of a standard bidirectional recurrent neural network container.
void Predict(arma::cube predictors, arma::cube &results, const size_t batchSize=256)
Predict the responses to a given set of predictors.
arma::mat & Parameters()
Modify the initial point for the optimization.
size_t & Rho()
Modify the maximum length of backpropagation through time.
const arma::mat & Parameters() const
Return the initial point for the optimization.
size_t NumFunctions() const
Return the number of separable functions. (number of predictor points).
void Shuffle()
Shuffle the order of function visitation.
void Reset()
Reset the state of the network.
double EvaluateWithGradient(const arma::mat ¶meters, const size_t begin, GradType &gradient, const size_t batchSize)
Evaluate the bidirectional recurrent neural network with the given parameters.
double Evaluate(const arma::mat ¶meters, const size_t begin, const size_t batchSize, const bool deterministic)
Evaluate the bidirectional recurrent neural network with the given parameters.
double Train(arma::cube predictors, arma::cube responses, OptimizerType &optimizer)
Train the bidirectional recurrent neural network on the given input data using the given optimizer.
void Add(LayerTypes< CustomLayers... > layer)
arma::cube & Predictors()
Modify the matrix of data points (predictors).
void ResetParameters()
Reset the module information (weights/parameters).
const arma::cube & Predictors() const
Get the matrix of data points (predictors).
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 doesn't then simply return from the funct...
double Train(arma::cube predictors, arma::cube responses)
Train the bidirectional recurrent neural network on the given input data.
double Evaluate(const arma::mat ¶meters, const size_t begin, const size_t batchSize)
Evaluate the bidirectional recurrent neural network with the given parameters.
const arma::cube & Responses() const
Get the matrix of responses to the input data points.
void Gradient(const arma::mat ¶meters, const size_t begin, arma::mat &gradient, const size_t batchSize)
Evaluate the gradient of the bidirectional recurrent neural network with the given parameters,...
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...
arma::cube & Responses()
Modify the matrix of responses to the input data points.
BRNN(const size_t rho, const bool single=false, OutputLayerType outputLayer=OutputLayerType(), MergeLayerType *mergeLayer=new MergeLayerType(), MergeOutputType *mergeOutput=new MergeOutputType(), InitializationRuleType initializeRule=InitializationRuleType())
Create the BRNN object.
const size_t & Rho() const
Return the maximum length of backpropagation through time.
void serialize(Archive &ar, const unsigned int)
Serialize the model.
This visitor is to support copy constructor for neural network module.
DeleteVisitor executes the destructor of the instantiated object.
DeltaVisitor exposes the delta parameter of the given module.
OutputParameterVisitor exposes the output parameter of the given module.
Implementation of a standard recurrent neural network container.
ResetVisitor executes the Reset() function.
WeightSizeVisitor returns the number of weights of the given module.
Set the serialization version of the adaboost class.
BaseLayer< ActivationFunction, InputDataType, OutputDataType > CustomLayer
Standard Sigmoid layer.
boost::variant< AdaptiveMaxPooling< arma::mat, arma::mat > *, AdaptiveMeanPooling< arma::mat, arma::mat > *, Add< arma::mat, arma::mat > *, AddMerge< arma::mat, arma::mat > *, AlphaDropout< 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< SoftplusFunction, arma::mat, arma::mat > *, BaseLayer< RectifierFunction, arma::mat, arma::mat > *, BatchNorm< arma::mat, arma::mat > *, BilinearInterpolation< arma::mat, arma::mat > *, CELU< 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 > *, CReLU< arma::mat, arma::mat > *, DropConnect< arma::mat, arma::mat > *, Dropout< arma::mat, arma::mat > *, ELU< arma::mat, arma::mat > *, FastLSTM< arma::mat, arma::mat > *, FlexibleReLU< arma::mat, arma::mat > *, GRU< arma::mat, arma::mat > *, HardTanH< arma::mat, arma::mat > *, Join< arma::mat, arma::mat > *, LayerNorm< arma::mat, arma::mat > *, LeakyReLU< 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 > *, 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 > *, NoisyLinear< arma::mat, arma::mat > *, Padding< arma::mat, arma::mat > *, PReLU< arma::mat, arma::mat > *, Softmax< arma::mat, arma::mat > *, SpatialDropout< arma::mat, arma::mat > *, TransposedConvolution< NaiveConvolution< ValidConvolution >, NaiveConvolution< ValidConvolution >, NaiveConvolution< ValidConvolution >, arma::mat, arma::mat > *, WeightNorm< arma::mat, arma::mat > *, MoreTypes, CustomLayers *... > LayerTypes
Linear algebra utility functions, generally performed on matrices or vectors.
The core includes that mlpack expects; standard C++ includes and Armadillo.
BOOST_STATIC_CONSTANT(int, value=1)