mlpack 3.4.2
dropconnect.hpp
Go to the documentation of this file.
1
14#ifndef MLPACK_METHODS_ANN_LAYER_DROPCONNECT_HPP
15#define MLPACK_METHODS_ANN_LAYER_DROPCONNECT_HPP
16
17#include <mlpack/prereqs.hpp>
18
19#include "layer_types.hpp"
20#include "add_merge.hpp"
21#include "linear.hpp"
22#include "sequential.hpp"
23
24namespace mlpack {
25namespace ann {
26
59template<
60 typename InputDataType = arma::mat,
61 typename OutputDataType = arma::mat
62>
64{
65 public:
68
77 DropConnect(const size_t inSize,
78 const size_t outSize,
79 const double ratio = 0.5);
80
87 template<typename eT>
88 void Forward(const arma::Mat<eT>& input, arma::Mat<eT>& output);
89
97 template<typename eT>
98 void Backward(const arma::Mat<eT>& input,
99 const arma::Mat<eT>& gy,
100 arma::Mat<eT>& g);
101
109 template<typename eT>
110 void Gradient(const arma::Mat<eT>& input,
111 const arma::Mat<eT>& error,
112 arma::Mat<eT>& /* gradient */);
113
115 std::vector<LayerTypes<> >& Model() { return network; }
116
118 OutputDataType const& Parameters() const { return parameters; }
120 OutputDataType& Parameters() { return parameters; }
121
123 OutputDataType const& OutputParameter() const { return outputParameter; }
125 OutputDataType& OutputParameter() { return outputParameter; }
126
128 OutputDataType const& Delta() const { return delta; }
130 OutputDataType& Delta() { return delta; }
131
133 OutputDataType const& Gradient() const { return gradient; }
135 OutputDataType& Gradient() { return gradient; }
136
138 bool Deterministic() const { return deterministic; }
139
141 bool &Deterministic() { return deterministic; }
142
144 double Ratio() const { return ratio; }
145
147 void Ratio(const double r)
148 {
149 ratio = r;
150 scale = 1.0 / (1.0 - ratio);
151 }
152
156 template<typename Archive>
157 void serialize(Archive& ar, const unsigned int /* version */);
158
159 private:
161 double ratio;
162
164 double scale;
165
167 OutputDataType parameters;
168
170 OutputDataType delta;
171
173 OutputDataType gradient;
174
176 OutputDataType outputParameter;
177
179 OutputDataType mask;
180
182 bool deterministic;
183
185 OutputDataType denoise;
186
188 LayerTypes<> baseLayer;
189
191 std::vector<LayerTypes<> > network;
192}; // class DropConnect.
193
194} // namespace ann
195} // namespace mlpack
196
197// Include implementation.
198#include "dropconnect_impl.hpp"
199
200#endif
The DropConnect layer is a regularizer that randomly with probability ratio sets the connection value...
Definition: dropconnect.hpp:64
double Ratio() const
The probability of setting a value to zero.
OutputDataType const & Delta() const
Get the delta.
OutputDataType const & Parameters() const
Get the parameters.
std::vector< LayerTypes<> > & Model()
Get the model modules.
void Forward(const arma::Mat< eT > &input, arma::Mat< eT > &output)
Ordinary feed forward pass of the DropConnect layer.
OutputDataType const & OutputParameter() const
Get the output parameter.
void Gradient(const arma::Mat< eT > &input, const arma::Mat< eT > &error, arma::Mat< eT > &)
Calculate the gradient using the output delta and the input activation.
DropConnect(const size_t inSize, const size_t outSize, const double ratio=0.5)
Creates the DropConnect Layer as a Linear Object that takes input size, output size and ratio as para...
void Backward(const arma::Mat< eT > &input, const arma::Mat< eT > &gy, arma::Mat< eT > &g)
Ordinary feed backward pass of the DropConnect layer.
DropConnect()
Create the DropConnect object.
void Ratio(const double r)
Modify the probability of setting a value to zero.
bool & Deterministic()
Modify the value of the deterministic parameter.
bool Deterministic() const
The value of the deterministic parameter.
OutputDataType const & Gradient() const
Get the gradient.
OutputDataType & Gradient()
Modify the gradient.
OutputDataType & OutputParameter()
Modify the output parameter.
void serialize(Archive &ar, const unsigned int)
Serialize the layer.
OutputDataType & Parameters()
Modify the parameters.
OutputDataType & Delta()
Modify the delta.
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.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.