Go to the documentation of this file.
8 #ifndef CSCNEURALNETWORK_H_
9 #define CSCNEURALNETWORK_H_
85 vector<int> nbNeuronsPerHiddenLayer;
89 NeuralNetworkShape(
int nbInputsNN,
int nbHiddenLayersNN, vector<int> nbNeuronsPerHiddenLayerNN,
int nbOutputsNN);
90 NeuralNetworkShape(
int nbInputsNN,
int nbHiddenLayersNN,
int nbNeuronsPerHiddenLayerNN,
int nbOutputsNN);
91 const int getNbInputs()
const;
92 const int getNbHiddenLayers()
const;
93 vector<int> getNbNeuronsPerHiddenLayerVector()
const;
94 const int getNbOutputs()
const;
97 void setNbHiddenLayers(
int newNbHiddenLayers);
98 void setNbNeuronsPerHiddenLayer(
int newNbNeuronsPerHiddenLayer);
103 const int dataSizeDataSet;
104 int nbDataPerMiniBatchSet;
105 float*** inputsDataSet;
106 float*** targetsDataSet;
108 DataSet(
const int dataSize,
int nbDataPerMiniBatch,
float*** inputs,
float*** targets);
109 const int getDataSize()
const;
110 const int getNbDataPerMiniBatchSize()
const;
111 float*** getInputs()
const;
112 float*** getTargets()
const;
117 const int nbEpochPerformed;
118 const int bestEpochOnValidationData;
119 const float meanOnTrainingData;
120 const float meanOnValidationData;
123 ResultTraining(
const int nbEpochResult,
const int bestEpochOnValidationDataResult,
const float meanOnTrainingDataResult,
const float meanOnValidationDataResult);
124 const int getNbEpochPerformed()
const;
125 const int getBestEpochOnValidationData()
const;
126 const float getMeanOnTrainingData()
const;
127 const float getMeanOnValidationData()
const;
148 float beta2 = 0.999f;
149 float epsilon = 0.00000001f;
150 int nbDataPerMiniBatch;
151 bool earlyStoppingActivation;
160 void setLearningRate(
float learningRateUpdate);
161 void setRho(
float rho);
162 void setBeta1(
float beta1Update);
163 void setBeta2(
float beta2Update);
164 void setEpsilon(
float epsilonUpdate);
165 void setNbDataPerMiniBatch(
int nbDataPerMiniBatchUpdate);
166 void setEarlyStoppingActivation(
bool earlyStoppingUpdate);
167 void setPatience(
int patienceUpdate);
173 const float getLearningRate()
const;
174 const float getRho()
const;
175 const float getBeta1()
const;
176 const float getBeta2()
const;
177 const float getEpsilon()
const;
178 const int getNbDataPerMiniBatch()
const;
179 const bool getEarlyStoppingActivation()
const;
180 const int getPatience()
const;
238 virtual ResultTraining trainNeuralNetwork(
const int nbEpochs,
const int nbMiniBatchs,
DataSet* trainingDataSet,
DataSet* validationDataSet,
const bool debugMode =
false) = 0;
256 static float*** adaptDataForMiniBatches(
float** dataToTransform,
const int minibatchSize,
const int dataSetSize);
259 static void normalizeDataAutoRange(
float** data,
size_t size,
int nbInputsOrOutputs,
CscNormalizationType normalizationType);
260 static void normalizeDataCustomRange0to1(
float** data,
size_t size,
int nbInputsOrOutputs,
float* minValue,
float* maxValue);
261 static void normalizeDataCustomRangeMinus1to1(
float** data,
size_t size,
int nbInputsOrOutputs,
float* minValue,
float* maxValue);
282 static void normalizeData(
float** data,
size_t size,
int rowData,
float newMin,
float newMax,
float minValue,
float maxValue);
299 static void deleteAllDataMiniBatches(
float ***dataMiniBatches,
const int nbMiniBatches,
const int nbDataPerMinibatch);
328 static void initializeWeights(
float* weightsToInitialize,
int size,
CscInitializationWeightsStrategy strategy,
int fanIn,
int fanOut = 0,
float* weightsLoaded =
nullptr);
342 static float calculateStddevHe(
int fanIn);
343 static float calculateLimitGlorot(
int fanIn,
int fanOut);
344 static float calculateStddevGlorot(
int fanIn,
int fanOut);
345 static float calculateStddevLeCun(
int fanIn);
346 static void initNormal(
float* weights,
int size, mt19937& gen,
double stddev);
347 static void initUniform(
float* weights,
int size, mt19937& gen,
float limit);
361 void shuffleMinibatchData(
float*** minibatchDataInputs,
float*** minibatchDataTargets,
const int numberOfBatches,
const int minibatchSize);
@ GradientDescent
Definition: CscNeuralNetwork.h:73
CscInitializationBiasStrategy
Definition: CscNeuralNetwork.h:61
@ Rint
Definition: CscNeuralNetwork.h:38
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
@ Linear
Definition: CscNeuralNetwork.h:29
Definition: CscNeuralNetwork.h:101
@ Selu
Definition: CscNeuralNetwork.h:31
Definition: CscNeuralNetwork.h:184
@ Adadelta
Definition: CscNeuralNetwork.h:75
@ Softsign
Definition: CscNeuralNetwork.h:40
@ Expm1
Definition: CscNeuralNetwork.h:35
@ Tanh
Definition: CscNeuralNetwork.h:30
CscNeuralNetworkType
Definition: CscNeuralNetwork.h:20
Definition: CscNeuralNetwork.cpp:12
Definition: CscNeuralNetwork.h:81
CscInitializationWeightsStrategy
Definition: CscNeuralNetwork.h:53
@ HingeLoss
Definition: CscNeuralNetwork.h:50
@ Softplus
Definition: CscNeuralNetwork.h:41
@ Range0To1
Definition: CscNeuralNetwork.h:69
@ MeanAbsoluteError
Definition: CscNeuralNetwork.h:49
@ Zero
Definition: CscNeuralNetwork.h:63
@ Elu
Definition: CscNeuralNetwork.h:31
@ Acosh
Definition: CscNeuralNetwork.h:32
unique_ptr< CscLogger > logger
Definition: CscNeuralNetwork.h:337
@ Relu
Definition: CscNeuralNetwork.h:31
@ RecurrentNeuralNetwork
Definition: CscNeuralNetwork.h:23
@ LittleValue
Definition: CscNeuralNetwork.h:64
@ RangeMinus1To1
Definition: CscNeuralNetwork.h:68
@ Sqrt
Definition: CscNeuralNetwork.h:42
@ Asin
Definition: CscNeuralNetwork.h:32
CscActivationFunction
Definition: CscNeuralNetwork.h:27
CscNeuralNetworkType neuralNetworkType
Definition: CscNeuralNetwork.h:334
@ Exp
Definition: CscNeuralNetwork.h:35
@ Sinh
Definition: CscNeuralNetwork.h:32
@ Sign
Definition: CscNeuralNetwork.h:39
Structure representing the hyperparameters for model training.
Definition: CscNeuralNetwork.h:139
@ Atan
Definition: CscNeuralNetwork.h:32
@ Ceil
Definition: CscNeuralNetwork.h:33
Definition: CscNeuralNetwork.h:115
@ LeCunNormal
Definition: CscNeuralNetwork.h:58
@ DenseNeuralNetwork
Definition: CscNeuralNetwork.h:22
@ Sigmoid
Definition: CscNeuralNetwork.h:30
CscLossFunction
Definition: CscNeuralNetwork.h:46
@ GlorotUniform
Definition: CscNeuralNetwork.h:56
@ He
Definition: CscNeuralNetwork.h:55
@ Adagrad
Definition: CscNeuralNetwork.h:74
@ BiasesLoadFromModel
Definition: CscNeuralNetwork.h:62
@ Asinh
Definition: CscNeuralNetwork.h:32
@ GlorotNormal
Definition: CscNeuralNetwork.h:57
@ MeanSquaredError
Definition: CscNeuralNetwork.h:48
@ Atanh
Definition: CscNeuralNetwork.h:32
@ Erf
Definition: CscNeuralNetwork.h:34
Definition: CscNeuralNetwork.h:79
@ LeakyRelu
Definition: CscNeuralNetwork.h:31
CscNormalizationType
Definition: CscNeuralNetwork.h:67
@ Log
Definition: CscNeuralNetwork.h:37
@ Log1p
Definition: CscNeuralNetwork.h:37
@ Floor
Definition: CscNeuralNetwork.h:36
CscOptimizer
Definition: CscNeuralNetwork.h:72
@ Adam
Definition: CscNeuralNetwork.h:76
@ Relu6
Definition: CscNeuralNetwork.h:31
@ WeightsLoadFromModel
Definition: CscNeuralNetwork.h:54