neural net
holds the structure of all layers and some data for the whole net does not know the layer data though (i.e. values of the nodes and weights)
Definition at line 1066 of file NeuralNet.h.
Public Types | |
typedef std::pair< iterator_type, iterator_type > | begin_end_type |
typedef std::vector< double > | container_type |
typedef container_type::iterator | iterator_type |
Public Member Functions | |
Net () | |
c'tor More... | |
Net (const Net &other) | |
d'tor More... | |
void | addLayer (Layer &&layer) |
void | addLayer (Layer &layer) |
add a layer (layout) More... | |
template<typename Settings > | |
void | backPropagate (std::vector< std::vector< LayerData > > &layerPatternData, const Settings &settings, size_t trainFromLayer, size_t totalNumWeights) const |
void | clear () |
template<typename Weights > | |
std::vector< double > | compute (const std::vector< double > &input, const Weights &weights) const |
compute the net with the given input and the given weights More... | |
template<typename ItWeight > | |
std::tuple< double, double > | computeError (const Settings &settings, std::vector< LayerData > &lastLayerData, Batch &batch, ItWeight itWeightBegin, ItWeight itWeightEnd) const |
void | dE () |
template<typename WeightsType , typename DropProbabilities > | |
void | dropOutWeightFactor (WeightsType &weights, const DropProbabilities &drops, bool inverse=false) |
set the drop out configuration More... | |
double | E () |
template<typename Container , typename ItWeight > | |
double | errorFunction (LayerData &layerData, Container truth, ItWeight itWeight, ItWeight itWeightEnd, double patternWeight, double factorWeightDecay, EnumRegularization eRegularization) const |
computes the error of the DNN More... | |
template<typename OutputContainer > | |
void | fetchOutput (const LayerData &lastLayerData, OutputContainer &outputContainer) const |
template<typename OutputContainer > | |
void | fetchOutput (const std::vector< LayerData > &layerPatternData, OutputContainer &outputContainer) const |
template<typename LayerContainer , typename PassThrough , typename ItWeight , typename ItGradient , typename OutContainer > | |
double | forward_backward (LayerContainer &layers, PassThrough &settingsAndBatch, ItWeight itWeightBegin, ItWeight itWeightEnd, ItGradient itGradientBegin, ItGradient itGradientEnd, size_t trainFromLayer, OutContainer &outputContainer, bool fetchOutput) const |
main NN computation function More... | |
template<typename LayerContainer , typename LayerPatternContainer > | |
void | forwardBatch (const LayerContainer &_layers, LayerPatternContainer &layerPatternData, std::vector< double > &valuesMean, std::vector< double > &valuesStdDev, size_t trainFromLayer) const |
template<typename LayerContainer > | |
void | forwardPattern (const LayerContainer &_layers, std::vector< LayerData > &layerData) const |
template<typename OutIterator > | |
void | initializeWeights (WeightInitializationStrategy eInitStrategy, OutIterator itWeight) |
initialize the weights with the given strategy More... | |
size_t | inputSize () const |
input size of the DNN More... | |
std::vector< Layer > & | layers () |
returns the layers (structure) More... | |
const std::vector< Layer > & | layers () const |
returns the layers (structure) More... | |
size_t | numNodes (size_t trainingStartLayer=0) const |
returns the number of nodes in this net More... | |
size_t | numWeights (size_t trainingStartLayer=0) const |
returns the number of weights in this net More... | |
template<typename Weights , typename PassThrough > | |
double | operator() (PassThrough &settingsAndBatch, const Weights &weights) const |
execute computation of the DNN for one mini-batch (used by the minimizer); no computation of gradients More... | |
template<typename Weights , typename PassThrough , typename OutContainer > | |
double | operator() (PassThrough &settingsAndBatch, const Weights &weights, ModeOutput eFetch, OutContainer &outputContainer) const |
execute computation of the DNN for one mini-batch; helper function More... | |
template<typename Weights , typename Gradients , typename PassThrough > | |
double | operator() (PassThrough &settingsAndBatch, Weights &weights, Gradients &gradients) const |
execute computation of the DNN for one mini-batch (used by the minimizer); returns gradients as well More... | |
template<typename Weights , typename Gradients , typename PassThrough , typename OutContainer > | |
double | operator() (PassThrough &settingsAndBatch, Weights &weights, Gradients &gradients, ModeOutput eFetch, OutContainer &outputContainer) const |
size_t | outputSize () const |
output size of the DNN More... | |
template<typename LayerContainer , typename DropContainer , typename ItWeight , typename ItGradient > | |
std::vector< std::vector< LayerData > > | prepareLayerData (LayerContainer &layers, Batch &batch, const DropContainer &dropContainer, ItWeight itWeightBegin, ItWeight itWeightEnd, ItGradient itGradientBegin, ItGradient itGradientEnd, size_t &totalNumWeights) const |
template<typename Minimizer > | |
void | preTrain (std::vector< double > &weights, std::vector< Pattern > &trainPattern, const std::vector< Pattern > &testPattern, Minimizer &minimizer, Settings &settings) |
pre-training for future use More... | |
void | removeLayer () |
remove one layer More... | |
void | setErrorFunction (ModeErrorFunction eErrorFunction) |
which error function is to be used More... | |
void | setInputSize (size_t sizeInput) |
set the input size of the DNN More... | |
void | SetIpythonInteractive (IPythonInteractive *fI, bool *fE, UInt_t *M, UInt_t *C) |
void | setOutputSize (size_t sizeOutput) |
set the output size of the DNN More... | |
template<typename Minimizer > | |
double | train (std::vector< double > &weights, std::vector< Pattern > &trainPattern, const std::vector< Pattern > &testPattern, Minimizer &minimizer, Settings &settings) |
start the training More... | |
template<typename Iterator , typename Minimizer > | |
double | trainCycle (Minimizer &minimizer, std::vector< double > &weights, Iterator itPatternBegin, Iterator itPatternEnd, Settings &settings, DropContainer &dropContainer) |
executes one training cycle More... | |
Protected Member Functions | |
void | fillDropContainer (DropContainer &dropContainer, double dropFraction, size_t numNodes) const |
prepare the drop-out-container (select the nodes which are to be dropped out) More... | |
Protected Attributes | |
bool * | fExitFromTraining = nullptr |
IPythonInteractive * | fInteractive = nullptr |
UInt_t * | fIPyCurrentIter = nullptr |
UInt_t * | fIPyMaxIter = nullptr |
Private Attributes | |
ModeErrorFunction | m_eErrorFunction |
denotes the error function More... | |
std::vector< Layer > | m_layers |
layer-structure-data More... | |
size_t | m_sizeInput |
input size of this DNN More... | |
size_t | m_sizeOutput |
outut size of this DNN More... | |
#include <TMVA/NeuralNet.h>
typedef std::pair<iterator_type,iterator_type> TMVA::DNN::Net::begin_end_type |
Definition at line 1072 of file NeuralNet.h.
typedef std::vector<double> TMVA::DNN::Net::container_type |
Definition at line 1070 of file NeuralNet.h.
typedef container_type::iterator TMVA::DNN::Net::iterator_type |
Definition at line 1071 of file NeuralNet.h.
|
inline |
c'tor
Definition at line 1079 of file NeuralNet.h.
|
inline |
d'tor
Definition at line 1090 of file NeuralNet.h.
Definition at line 1100 of file NeuralNet.h.
add a layer (layout)
Definition at line 1099 of file NeuralNet.h.
void TMVA::DNN::Net::backPropagate | ( | std::vector< std::vector< LayerData > > & | layerPatternData, |
const Settings & | settings, | ||
size_t | trainFromLayer, | ||
size_t | totalNumWeights | ||
) | const |
Definition at line 1367 of file NeuralNet.icc.
|
inline |
Definition at line 1256 of file NeuralNet.h.
std::vector< double > TMVA::DNN::Net::compute | ( | const std::vector< double > & | input, |
const Weights & | weights | ||
) | const |
compute the net with the given input and the given weights
compute the neural net
input | the input data |
weights | the weight data |
Definition at line 1039 of file NeuralNet.icc.
std::tuple< double, double > TMVA::DNN::Net::computeError | ( | const Settings & | settings, |
std::vector< LayerData > & | lastLayerData, | ||
Batch & | batch, | ||
ItWeight | itWeightBegin, | ||
ItWeight | itWeightEnd | ||
) | const |
Definition at line 1330 of file NeuralNet.icc.
void TMVA::DNN::Net::dE | ( | ) |
void TMVA::DNN::Net::dropOutWeightFactor | ( | WeightsType & | weights, |
const DropProbabilities & | drops, | ||
bool | inverse = false |
||
) |
set the drop out configuration
compute the drop-out-weight factor
when using drop-out a fraction of the nodes is turned off at each cycle of the computation once all nodes are turned on again (for instances when the test samples are evaluated), the weights have to be adjusted to account for the different number of active nodes this function computes the factor and applies it to the weights
Definition at line 652 of file NeuralNet.icc.
double TMVA::DNN::Net::E | ( | ) |
double TMVA::DNN::Net::errorFunction | ( | LayerData & | layerData, |
Container | truth, | ||
ItWeight | itWeight, | ||
ItWeight | itWeightEnd, | ||
double | patternWeight, | ||
double | factorWeightDecay, | ||
EnumRegularization | eRegularization | ||
) | const |
computes the error of the DNN
compute the error function
Definition at line 1592 of file NeuralNet.icc.
void TMVA::DNN::Net::fetchOutput | ( | const LayerData & | lastLayerData, |
OutputContainer & | outputContainer | ||
) | const |
Definition at line 1300 of file NeuralNet.icc.
void TMVA::DNN::Net::fetchOutput | ( | const std::vector< LayerData > & | layerPatternData, |
OutputContainer & | outputContainer | ||
) | const |
Definition at line 1321 of file NeuralNet.icc.
|
protected |
prepare the drop-out-container (select the nodes which are to be dropped out)
prepare the drop-out container given the provided drop-fractions
Definition at line 575 of file NeuralNet.cxx.
double TMVA::DNN::Net::forward_backward | ( | LayerContainer & | layers, |
PassThrough & | settingsAndBatch, | ||
ItWeight | itWeightBegin, | ||
ItWeight | itWeightEnd, | ||
ItGradient | itGradientBegin, | ||
ItGradient | itGradientEnd, | ||
size_t | trainFromLayer, | ||
OutContainer & | outputContainer, | ||
bool | fetchOutput | ||
) | const |
main NN computation function
forward propagation and backward propagation
Definition at line 1418 of file NeuralNet.icc.
void TMVA::DNN::Net::forwardBatch | ( | const LayerContainer & | _layers, |
LayerPatternContainer & | layerPatternData, | ||
std::vector< double > & | valuesMean, | ||
std::vector< double > & | valuesStdDev, | ||
size_t | trainFromLayer | ||
) | const |
Definition at line 1245 of file NeuralNet.icc.
void TMVA::DNN::Net::forwardPattern | ( | const LayerContainer & | _layers, |
std::vector< LayerData > & | layerData | ||
) | const |
Definition at line 1225 of file NeuralNet.icc.
void TMVA::DNN::Net::initializeWeights | ( | WeightInitializationStrategy | eInitStrategy, |
OutIterator | itWeight | ||
) |
initialize the weights with the given strategy
initialization of the weights
Definition at line 1483 of file NeuralNet.icc.
|
inline |
input size of the DNN
Definition at line 1103 of file NeuralNet.h.
|
inline |
returns the layers (structure)
Definition at line 1251 of file NeuralNet.h.
|
inline |
returns the layers (structure)
Definition at line 1250 of file NeuralNet.h.
size_t TMVA::DNN::Net::numNodes | ( | size_t | trainingStartLayer = 0 | ) | const |
returns the number of nodes in this net
Definition at line 559 of file NeuralNet.cxx.
size_t TMVA::DNN::Net::numWeights | ( | size_t | trainingStartLayer = 0 | ) | const |
returns the number of weights in this net
compute the number of weights given the size of the input layer
Definition at line 543 of file NeuralNet.cxx.
double TMVA::DNN::Net::operator() | ( | PassThrough & | settingsAndBatch, |
const Weights & | weights | ||
) | const |
execute computation of the DNN for one mini-batch (used by the minimizer); no computation of gradients
Definition at line 1072 of file NeuralNet.icc.
double TMVA::DNN::Net::operator() | ( | PassThrough & | settingsAndBatch, |
const Weights & | weights, | ||
ModeOutput | eFetch, | ||
OutContainer & | outputContainer | ||
) | const |
execute computation of the DNN for one mini-batch; helper function
Definition at line 1081 of file NeuralNet.icc.
double TMVA::DNN::Net::operator() | ( | PassThrough & | settingsAndBatch, |
Weights & | weights, | ||
Gradients & | gradients | ||
) | const |
execute computation of the DNN for one mini-batch (used by the minimizer); returns gradients as well
Definition at line 1091 of file NeuralNet.icc.
double TMVA::DNN::Net::operator() | ( | PassThrough & | settingsAndBatch, |
Weights & | weights, | ||
Gradients & | gradients, | ||
ModeOutput | eFetch, | ||
OutContainer & | outputContainer | ||
) | const |
Definition at line 1101 of file NeuralNet.icc.
|
inline |
output size of the DNN
Definition at line 1104 of file NeuralNet.h.
std::vector< std::vector< LayerData > > TMVA::DNN::Net::prepareLayerData | ( | LayerContainer & | layers, |
Batch & | batch, | ||
const DropContainer & | dropContainer, | ||
ItWeight | itWeightBegin, | ||
ItWeight | itWeightEnd, | ||
ItGradient | itGradientBegin, | ||
ItGradient | itGradientEnd, | ||
size_t & | totalNumWeights | ||
) | const |
Definition at line 1113 of file NeuralNet.icc.
void TMVA::DNN::Net::preTrain | ( | std::vector< double > & | weights, |
std::vector< Pattern > & | trainPattern, | ||
const std::vector< Pattern > & | testPattern, | ||
Minimizer & | minimizer, | ||
Settings & | settings | ||
) |
pre-training for future use
|
inline |
remove one layer
Definition at line 1253 of file NeuralNet.h.
|
inline |
which error function is to be used
Definition at line 1101 of file NeuralNet.h.
|
inline |
set the input size of the DNN
Definition at line 1097 of file NeuralNet.h.
|
inline |
Definition at line 1288 of file NeuralNet.h.
|
inline |
set the output size of the DNN
Definition at line 1098 of file NeuralNet.h.
double TMVA::DNN::Net::train | ( | std::vector< double > & | weights, |
std::vector< Pattern > & | trainPattern, | ||
const std::vector< Pattern > & | testPattern, | ||
Minimizer & | minimizer, | ||
Settings & | settings | ||
) |
start the training
execute the training until convergence emerges
weights | weight vector |
trainPattern | training pattern |
testPattern | test pattern |
minimizer | use this minimizer for training (e.g. SGD) |
settings | settings used for this training run |
weights | the container with the weights (synapses) |
trainPattern | the pattern for the training |
testPattern | the pattern for the testing |
minimizer | the minimizer (e.g. steepest gradient descent) to be used |
settings | the settings for the training (e.g. multithreading or not, regularization etc.) |
Definition at line 712 of file NeuralNet.icc.
|
inline |
executes one training cycle
execute a single training cycle
minimizier | the minimizer to be used |
weights | the weight vector to be used |
itPatternBegin | the pattern to be trained with |
itPatternEnd | the pattern to be trainied with |
settings | the settings for the training |
dropContainer | the configuration for DNN drop-out |
uses multithreading if turned on
minimizer | the minimizer to be used (e.g. SGD) |
weights | the weight container with all the synapse weights |
itPatternBegin | begin of the pattern container \parama itPatternEnd the end of the pattern container |
settings | the settings for this training (e.g. multithreading or not, regularization, etc.) |
dropContainer | the data for dropping-out nodes (regularization technique) |
Definition at line 941 of file NeuralNet.icc.
|
protected |
Definition at line 1282 of file NeuralNet.h.
|
protected |
Definition at line 1281 of file NeuralNet.h.
|
protected |
Definition at line 1283 of file NeuralNet.h.
|
protected |
Definition at line 1283 of file NeuralNet.h.
|
private |
denotes the error function
Definition at line 1274 of file NeuralNet.h.
|
private |
layer-structure-data
Definition at line 1277 of file NeuralNet.h.
|
private |
input size of this DNN
Definition at line 1275 of file NeuralNet.h.
|
private |
outut size of this DNN
Definition at line 1276 of file NeuralNet.h.