#include "Math/Util.h"
#include "TMVA/Pattern.h"
#include "TMVA/MethodBase.h"
#include <tuple>
#include <future>
#include <random>
Namespaces | |
namespace | TMVA |
create variable transformations | |
namespace | TMVA::DNN |
Macros | |
#define | TMVA_NEURAL_NET_I |
#define | USELOCALWEIGHTS 1 |
Functions | |
template<typename ItValue , typename Fnc > | |
void | TMVA::DNN::applyFunctions (ItValue itValue, ItValue itValueEnd, Fnc fnc) |
apply the activation functions | |
template<typename ItValue , typename Fnc , typename InvFnc , typename ItGradient > | |
void | TMVA::DNN::applyFunctions (ItValue itValue, ItValue itValueEnd, Fnc fnc, InvFnc invFnc, ItGradient itGradient) |
apply the activation functions and compute the gradient | |
template<bool HasDropOut, typename ItSource , typename ItWeight , typename ItTarget , typename ItDrop > | |
void | TMVA::DNN::applyWeights (ItSource itSourceBegin, ItSource itSourceEnd, ItWeight itWeight, ItTarget itTargetBegin, ItTarget itTargetEnd, ItDrop itDrop) |
apply weights using drop-out; for no drop out, provide (&bool = true) to itDrop such that *itDrop becomes "true" | |
template<bool HasDropOut, typename ItSource , typename ItWeight , typename ItPrev , typename ItDrop > | |
void | TMVA::DNN::applyWeightsBackwards (ItSource itCurrBegin, ItSource itCurrEnd, ItWeight itWeight, ItPrev itPrevBegin, ItPrev itPrevEnd, ItDrop itDrop) |
apply weights backwards (for backprop); for no drop out, provide (&bool = true) to itDrop such that *itDrop becomes "true" | |
template<typename LAYERDATA > | |
void | TMVA::DNN::backward (LAYERDATA &prevLayerData, LAYERDATA &currLayerData) |
backward application of the weights (back-propagation of the error) | |
template<EnumRegularization Regularization> | |
double | TMVA::DNN::computeRegularization (double weight, const double &factorWeightDecay) |
compute the regularization (L1, L2) | |
template<> | |
double | TMVA::DNN::computeRegularization< EnumRegularization::L1 > (double weight, const double &factorWeightDecay) |
template<> | |
double | TMVA::DNN::computeRegularization< EnumRegularization::L2 > (double weight, const double &factorWeightDecay) |
template<typename ItProbability , typename ItTruth , typename ItDelta , typename ItInvActFnc > | |
double | TMVA::DNN::crossEntropy (ItProbability itProbabilityBegin, ItProbability itProbabilityEnd, ItTruth itTruthBegin, ItTruth, ItDelta itDelta, ItDelta itDeltaEnd, ItInvActFnc, double patternWeight) |
cross entropy error function | |
template<typename LAYERDATA > | |
void | TMVA::DNN::forward (const LAYERDATA &prevLayerData, LAYERDATA &currLayerData) |
apply the weights (and functions) in forward direction of the DNN | |
template<typename ItOutput , typename ItTruth , typename ItDelta , typename ItInvActFnc > | |
double | TMVA::DNN::softMaxCrossEntropy (ItOutput itProbabilityBegin, ItOutput itProbabilityEnd, ItTruth itTruthBegin, ItTruth, ItDelta itDelta, ItDelta itDeltaEnd, ItInvActFnc, double patternWeight) |
soft-max-cross-entropy error function (for mutual exclusive cross-entropy) | |
template<typename ItOutput , typename ItTruth , typename ItDelta , typename InvFnc > | |
double | TMVA::DNN::sumOfSquares (ItOutput itOutputBegin, ItOutput itOutputEnd, ItTruth itTruthBegin, ItTruth, ItDelta itDelta, ItDelta itDeltaEnd, InvFnc invFnc, double patternWeight) |
sum of squares error function | |
template<typename Container , typename T > | |
void | TMVA::DNN::uniformDouble (Container &container, T maxValue) |
template<typename T > | |
T | TMVA::DNN::uniformFromTo (T from, T to) |
template<typename LAYERDATA > | |
void | TMVA::DNN::update (const LAYERDATA &prevLayerData, LAYERDATA &currLayerData, double factorWeightDecay, EnumRegularization regularization) |
update the node values | |
template<typename ItSource , typename ItDelta , typename ItTargetGradient , typename ItGradient > | |
void | TMVA::DNN::update (ItSource itSource, ItSource itSourceEnd, ItDelta itTargetDeltaBegin, ItDelta itTargetDeltaEnd, ItTargetGradient itTargetGradientBegin, ItGradient itGradient) |
update the gradients | |
template<EnumRegularization Regularization, typename ItSource , typename ItDelta , typename ItTargetGradient , typename ItGradient , typename ItWeight > | |
void | TMVA::DNN::update (ItSource itSource, ItSource itSourceEnd, ItDelta itTargetDeltaBegin, ItDelta itTargetDeltaEnd, ItTargetGradient itTargetGradientBegin, ItGradient itGradient, ItWeight itWeight, double weightDecay) |
update the gradients, using regularization | |
template<typename ItWeight > | |
double | TMVA::DNN::weightDecay (double error, ItWeight itWeight, ItWeight itWeightEnd, double factorWeightDecay, EnumRegularization eRegularization) |
compute the weight decay for regularization (L1 or L2) | |
Variables | |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::Gauss = std::make_shared<std::function<double(double)>> ([](double value){ const double s = 6.0; return exp (-std::pow(value*s,2.0)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::GaussComplement = std::make_shared<std::function<double(double)>> ([](double value){ const double s = 6.0; return 1.0 - exp (-std::pow(value*s,2.0)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvGauss = std::make_shared<std::function<double(double)>> ([](double value){ const double s = 6.0; return -2.0 * value * s*s * (*Gauss.get ()) (value); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvGaussComplement = std::make_shared<std::function<double(double)>> ([](double value){ const double s = 6.0; return +2.0 * value * s*s * (*GaussComplement.get ()) (value); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvLinear = std::make_shared<std::function<double(double)>> ([](double ){ return 1.0; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvReLU = std::make_shared<std::function<double(double)>> ([](double value){ const double margin = 0.0; return value > margin ? 1.0 : 0; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvSigmoid = std::make_shared<std::function<double(double)>> ([](double value){ double s = (*Sigmoid.get ()) (value); return s*(1.0-s); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvSoftPlus = std::make_shared<std::function<double(double)>> ([](double value){ return 1.0 / (1.0 + std::exp (-value)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvSoftSign = std::make_shared<std::function<double(double)>> ([](double value){ return std::pow ((1.0 - fabs (value)),2.0); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvSymmReLU = std::make_shared<std::function<double(double)>> ([](double value){ const double margin = 0.3; return value > margin ? 1.0 : value < -margin ? 1.0 : 0; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvTanh = std::make_shared<std::function<double(double)>> ([](double value){ return 1.0 - std::pow (value, 2.0); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::InvTanhShift = std::make_shared<std::function<double(double)>> ([](double value){ return 0.3 + (1.0 - std::pow (value, 2.0)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::Linear = std::make_shared<std::function<double(double)>> ([](double value){ return value; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::ReLU = std::make_shared<std::function<double(double)>> ([](double value){ const double margin = 0.0; return value > margin ? value-margin : 0; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::Sigmoid = std::make_shared<std::function<double(double)>> ([](double value){ value = std::max (-100.0, std::min (100.0,value)); return 1.0/(1.0 + std::exp (-value)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::SoftPlus = std::make_shared<std::function<double(double)>> ([](double value){ return std::log (1.0+ std::exp (value)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::SoftSign = std::make_shared<std::function<double(double)>> ([](double value){ return value / (1.0 + fabs (value)); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::SymmReLU = std::make_shared<std::function<double(double)>> ([](double value){ const double margin = 0.3; return value > margin ? value-margin : value < -margin ? value+margin : 0; }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::Tanh = std::make_shared<std::function<double(double)>> ([](double value){ return tanh (value); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::TanhShift = std::make_shared<std::function<double(double)>> ([](double value){ return tanh (value-0.3); }) |
std::shared_ptr< std::function< double(double)> > | TMVA::DNN::ZeroFnc = std::make_shared<std::function<double(double)>> ([](double ){ return 0; }) |
#define TMVA_NEURAL_NET_I |
Definition at line 2 of file NeuralNet.icc.
#define USELOCALWEIGHTS 1 |
Definition at line 262 of file NeuralNet.icc.