Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TMVA::DNN::Net Class Reference

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 1061 of file NeuralNet.h.

Public Types

typedef std::pair< iterator_type, iterator_typebegin_end_type
 
typedef std::vector< doublecontainer_type
 
typedef container_type::iterator iterator_type
 

Public Member Functions

 Net ()
 c'tor
 
 Net (const Net &other)
 d'tor
 
void addLayer (Layer &&layer)
 
void addLayer (Layer &layer)
 add a layer (layout)
 
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< doublecompute (const std::vector< double > &input, const Weights &weights) const
 compute the net with the given input and the given weights
 
template<typename ItWeight >
std::tuple< double, doublecomputeError (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
 
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
 
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
 
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
 
size_t inputSize () const
 input size of the DNN
 
std::vector< Layer > & layers ()
 returns the layers (structure)
 
const std::vector< Layer > & layers () const
 returns the layers (structure)
 
size_t numNodes (size_t trainingStartLayer=0) const
 returns the number of nodes in this net
 
size_t numWeights (size_t trainingStartLayer=0) const
 returns the number of weights in this net
 
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
 
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
 
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
 
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
 
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
 
void removeLayer ()
 remove one layer
 
void setErrorFunction (ModeErrorFunction eErrorFunction)
 which error function is to be used
 
void setInputSize (size_t sizeInput)
 set the input size of the DNN
 
void SetIpythonInteractive (IPythonInteractive *fI, bool *fE, UInt_t *M, UInt_t *C)
 
void setOutputSize (size_t sizeOutput)
 set the output size of the DNN
 
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
 
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
 

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)
 

Protected Attributes

boolfExitFromTraining = nullptr
 
IPythonInteractivefInteractive = nullptr
 
UInt_tfIPyCurrentIter = nullptr
 
UInt_tfIPyMaxIter = nullptr
 

Private Attributes

ModeErrorFunction m_eErrorFunction
 denotes the error function
 
std::vector< Layerm_layers
 layer-structure-data
 
size_t m_sizeInput
 input size of this DNN
 
size_t m_sizeOutput
 output size of this DNN
 

#include <TMVA/NeuralNet.h>

Member Typedef Documentation

◆ begin_end_type

◆ container_type

Definition at line 1065 of file NeuralNet.h.

◆ iterator_type

typedef container_type::iterator TMVA::DNN::Net::iterator_type

Definition at line 1066 of file NeuralNet.h.

Constructor & Destructor Documentation

◆ Net() [1/2]

TMVA::DNN::Net::Net ( )
inline

c'tor

Definition at line 1074 of file NeuralNet.h.

◆ Net() [2/2]

TMVA::DNN::Net::Net ( const Net & other)
inline

d'tor

Definition at line 1085 of file NeuralNet.h.

Member Function Documentation

◆ addLayer() [1/2]

void TMVA::DNN::Net::addLayer ( Layer && layer)
inline

Definition at line 1095 of file NeuralNet.h.

◆ addLayer() [2/2]

void TMVA::DNN::Net::addLayer ( Layer & layer)
inline

add a layer (layout)

Definition at line 1094 of file NeuralNet.h.

◆ backPropagate()

template<typename Settings >
void TMVA::DNN::Net::backPropagate ( std::vector< std::vector< LayerData > > & layerPatternData,
const Settings & settings,
size_t trainFromLayer,
size_t totalNumWeights ) const

Definition at line 1355 of file NeuralNet.icc.

◆ clear()

void TMVA::DNN::Net::clear ( )
inline

Definition at line 1251 of file NeuralNet.h.

◆ compute()

template<typename Weights >
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

Parameters
inputthe input data
weightsthe weight data

Definition at line 1037 of file NeuralNet.icc.

◆ computeError()

template<typename ItWeight >
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 1321 of file NeuralNet.icc.

◆ dE()

void TMVA::DNN::Net::dE ( )

◆ dropOutWeightFactor()

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.

◆ E()

double TMVA::DNN::Net::E ( )

◆ errorFunction()

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 1579 of file NeuralNet.icc.

◆ fetchOutput() [1/2]

void TMVA::DNN::Net::fetchOutput ( const LayerData & lastLayerData,
OutputContainer & outputContainer ) const

Definition at line 1291 of file NeuralNet.icc.

◆ fetchOutput() [2/2]

void TMVA::DNN::Net::fetchOutput ( const std::vector< LayerData > & layerPatternData,
OutputContainer & outputContainer ) const

Definition at line 1312 of file NeuralNet.icc.

◆ fillDropContainer()

void TMVA::DNN::Net::fillDropContainer ( DropContainer & dropContainer,
double dropFraction,
size_t numNodes ) const
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 572 of file NeuralNet.cxx.

◆ forward_backward()

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 1405 of file NeuralNet.icc.

◆ forwardBatch()

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 1240 of file NeuralNet.icc.

◆ forwardPattern()

void TMVA::DNN::Net::forwardPattern ( const LayerContainer & _layers,
std::vector< LayerData > & layerData ) const

Definition at line 1221 of file NeuralNet.icc.

◆ initializeWeights()

template<typename OutIterator >
void TMVA::DNN::Net::initializeWeights ( WeightInitializationStrategy eInitStrategy,
OutIterator itWeight )

initialize the weights with the given strategy

initialization of the weights

Definition at line 1470 of file NeuralNet.icc.

◆ inputSize()

size_t TMVA::DNN::Net::inputSize ( ) const
inline

input size of the DNN

Definition at line 1098 of file NeuralNet.h.

◆ layers() [1/2]

std::vector< Layer > & TMVA::DNN::Net::layers ( )
inline

returns the layers (structure)

Definition at line 1246 of file NeuralNet.h.

◆ layers() [2/2]

const std::vector< Layer > & TMVA::DNN::Net::layers ( ) const
inline

returns the layers (structure)

Definition at line 1245 of file NeuralNet.h.

◆ numNodes()

size_t TMVA::DNN::Net::numNodes ( size_t trainingStartLayer = 0) const

returns the number of nodes in this net

Definition at line 556 of file NeuralNet.cxx.

◆ numWeights()

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 540 of file NeuralNet.cxx.

◆ operator()() [1/4]

template<typename Weights , typename PassThrough >
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 1070 of file NeuralNet.icc.

◆ operator()() [2/4]

template<typename Weights , typename PassThrough , typename OutContainer >
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 1079 of file NeuralNet.icc.

◆ operator()() [3/4]

template<typename Weights , typename Gradients , typename PassThrough >
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 1089 of file NeuralNet.icc.

◆ operator()() [4/4]

double TMVA::DNN::Net::operator() ( PassThrough & settingsAndBatch,
Weights & weights,
Gradients & gradients,
ModeOutput eFetch,
OutContainer & outputContainer ) const

Definition at line 1099 of file NeuralNet.icc.

◆ outputSize()

size_t TMVA::DNN::Net::outputSize ( ) const
inline

output size of the DNN

Definition at line 1099 of file NeuralNet.h.

◆ prepareLayerData()

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 1111 of file NeuralNet.icc.

◆ preTrain()

template<typename Minimizer >
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

◆ removeLayer()

void TMVA::DNN::Net::removeLayer ( )
inline

remove one layer

Definition at line 1248 of file NeuralNet.h.

◆ setErrorFunction()

void TMVA::DNN::Net::setErrorFunction ( ModeErrorFunction eErrorFunction)
inline

which error function is to be used

Definition at line 1096 of file NeuralNet.h.

◆ setInputSize()

void TMVA::DNN::Net::setInputSize ( size_t sizeInput)
inline

set the input size of the DNN

Definition at line 1092 of file NeuralNet.h.

◆ SetIpythonInteractive()

void TMVA::DNN::Net::SetIpythonInteractive ( IPythonInteractive * fI,
bool * fE,
UInt_t * M,
UInt_t * C )
inline

Definition at line 1283 of file NeuralNet.h.

◆ setOutputSize()

void TMVA::DNN::Net::setOutputSize ( size_t sizeOutput)
inline

set the output size of the DNN

Definition at line 1093 of file NeuralNet.h.

◆ train()

template<typename Minimizer >
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

Parameters
weightsweight vector
trainPatterntraining pattern
testPatterntest pattern
minimizeruse this minimizer for training (e.g. SGD)
settingssettings used for this training run
weightsthe container with the weights (synapses)
trainPatternthe pattern for the training
testPatternthe pattern for the testing
minimizerthe minimizer (e.g. steepest gradient descent) to be used
settingsthe settings for the training (e.g. multithreading or not, regularization etc.)

Definition at line 712 of file NeuralNet.icc.

◆ trainCycle()

template<typename Iterator , typename Minimizer >
double TMVA::DNN::Net::trainCycle ( Minimizer & minimizer,
std::vector< double > & weights,
Iterator itPatternBegin,
Iterator itPatternEnd,
Settings & settings,
DropContainer & dropContainer )
inline

executes one training cycle

execute a single training cycle

Parameters
minimizerthe minimizer to be used
weightsthe weight vector to be used
itPatternBeginthe pattern to be trained with
itPatternEndthe pattern to be trained with
settingsthe settings for the training
dropContainerthe configuration for DNN drop-out

uses multithreading if turned on

Parameters
minimizerthe minimizer to be used (e.g. SGD)
weightsthe weight container with all the synapse weights
itPatternBeginbegin of the pattern container
itPatternEndthe end of the pattern container
settingsthe settings for this training (e.g. multithreading or not, regularization, etc.)
dropContainerthe data for dropping-out nodes (regularization technique)

Definition at line 939 of file NeuralNet.icc.

Member Data Documentation

◆ fExitFromTraining

bool* TMVA::DNN::Net::fExitFromTraining = nullptr
protected

Definition at line 1277 of file NeuralNet.h.

◆ fInteractive

IPythonInteractive* TMVA::DNN::Net::fInteractive = nullptr
protected

Definition at line 1276 of file NeuralNet.h.

◆ fIPyCurrentIter

UInt_t * TMVA::DNN::Net::fIPyCurrentIter = nullptr
protected

Definition at line 1278 of file NeuralNet.h.

◆ fIPyMaxIter

UInt_t* TMVA::DNN::Net::fIPyMaxIter = nullptr
protected

Definition at line 1278 of file NeuralNet.h.

◆ m_eErrorFunction

ModeErrorFunction TMVA::DNN::Net::m_eErrorFunction
private

denotes the error function

Definition at line 1269 of file NeuralNet.h.

◆ m_layers

std::vector<Layer> TMVA::DNN::Net::m_layers
private

layer-structure-data

Definition at line 1272 of file NeuralNet.h.

◆ m_sizeInput

size_t TMVA::DNN::Net::m_sizeInput
private

input size of this DNN

Definition at line 1270 of file NeuralNet.h.

◆ m_sizeOutput

size_t TMVA::DNN::Net::m_sizeOutput
private

output size of this DNN

Definition at line 1271 of file NeuralNet.h.

Libraries for TMVA::DNN::Net:

The documentation for this class was generated from the following files: