NeuralNetwork is a supervised machine learning model that predicts any positive numbers of discrete or continuous values.
Contains a table of matrices.
Create new model object. If any of the arguments are nil, default argument values for that argument will be used.
NeuralNetwork.new(maximumNumberOfIterations: integer): ModelObject
Set model’s parameters. When any of the arguments are nil, previous argument values for that argument will be used.
NeuralNetwork:setParameters(maximumNumberOfIterations: integer)
Add a layer to the neural network.
NeuralNetwork:addLayer(numberOfNeurons: integer, hasBiasNeuron: boolean, activationFunction: string, learningRate: number, Optimizer: OptimizerObject, Regularization: RegularizationObject. dropoutRate: number)
numberOfNeurons: Set the number of neurons to be added to the next layer (excluding bias neuron).
hasBiasNeuron: Set whether or not the bias neuron will be added to next layer.
activationFunction: The activation function to be used for the next layer. Available options are:
Sigmoid
Tanh
ReLU
LeakyReLU
ELU
Gaussian
SiLU
Mish
BinaryStep
Softmax
StableSoftmax
None
learningRate: The speed at which the model learns. Recommended that the value is set between (0 to 1).
Optimizer: The optimizer object to be added at the last layer.
Regularization: The regularization object to be added at the last layer.
dropoutRate: The probabiliy of a neuron for selected layer number to be dropped out when required. Must be set between 0 and 1. Increasing the rate will cause more neurons more likely to output 0. By default, the dropoutRate is set to 0.
Change the properties of a selected layer of the neural netowrk.
NeuralNetwork:setLayer(layerNumber: integer, hasBiasNeuron: boolean, activationFunction: string, learningRate: number, Optimizer: OptimizerObject, Regularization: RegularizationObject, dropoutRate: number)
layerNumber: The layer that you wish to change properties on.
hasBiasNeuron: Set whether or not this layer has a bias neuron.
activationFunction: The activation function to be used for the current layer. Available options are:
Sigmoid
Tanh
ReLU
LeakyReLU
ELU
Gaussian
SiLU
Mish
BinaryStep
Softmax
StableSoftmax
None
learningRate: The speed at which the model learns. Recommended that the value is set between (0 to 1).
Optimizer: The optimizer object to be used by to this layer.
Regularization: The regularization object to be used by to this layer.
dropoutRate: The probabiliy of a neuron for selected layer number to be dropped out when required. Must be set between 0 and 1. Increasing the rate will cause more neurons more likely to output 0. By default, the dropoutRate is set to 0.
Create all the neurons (with bias neuron) in each of those layers. It also set all the activation function of all neuron to the activation function given in the function’s parameters. Resets the current model parameters stored in the neural network.
NeuralNetwork:createLayers(numberOfNeuronsArray: integer[], activationFunction: string, learningRate, Optimizer: OptimizerObject, Regularization: RegularizationObject, dropoutRate: number)
numberOfNeuronsArray: The array containing all the number of neurons for each layer (without bias neuron). The index determines the layer, while the value determines the number of neurons. Bias neurons will be added automatically after setting the number of neurons in each layer except for the output layer. For example, {3,7,6} means 3 neurons at layer 1, 7 neurons at layer 2, and 6 neurons at layer 3 wthout the bias neurons.
activationFunction: The activation function to be used for all layers. Available options are:
Sigmoid
Tanh
ReLU
LeakyReLU
ELU
Gaussian
SiLU
Mish
BinaryStep
Softmax
StableSoftmax
None
learningRate: The speed at which the model learns. Recommended that the value is set between (0 to 1).
Optimizer: The optimizer object to be added at the last layer.
Regularization: The regularization object to be added at the last layer.
dropoutRate: The probabiliy of a neuron for selected layer number to be dropped out when required. Must be set between 0 and 1. Increasing the rate will cause more neurons more likely to output 0. By default, the dropoutRate is set to 0.
NeuralNetwork:setLayerProperty(layerNumber: integer, property: string, value: any)
layerNumber: The layer to change its properties.
property: The property to be changed. The options available are:
HasBias
ActivationFunction
LearningRate
DropoutRate
Optimizer
Regularization
DropoutRate
value: The value to be set to the property for selected layer.
NeuralNetwork:getLayerProperty(layerNumber: integer, property: string): any
layerNumber: The layer to retrieve its properties.
property: The property to be changed. The options available are:
HasBias
ActivationFunction
LearningRate
Optimizer
Regularization
DropoutRate
Evolves a specified layer by changing the number of neurons.
NeuralNetwork:evolveLayerSize(layerNumber: number, initialNeuronIndex: number, size: number)
layerNumber: The layer to evolve.
initialNeuronIndex: The starting point where to add or remove new neurons. When removing neurons, this will be the first neuron to be removed. When adding neurons, the new neurons will be added after this neuron. Setting this to nil will cause it to choose the final neuron.
size: The number of neurons to add or to remove. Positive value indicates the addition of new neurons, while negative values indicates the removal of current neurons.
Train the model.
NeuralNetwork:train(featureMatrix: Matrix, labelVector / labelMatrix: Matrix): number[]
featureMatrix: Matrix containing all data.
labelVector / labelMatrix: A (n x 1) / (n x o) matrix containing values related to featureMatrix. When using the label matrix, the number of columns must be equal to number of classes.
Predict the values for given data.
NeuralNetwork:predict(featureMatrix: Matrix, returnOriginalOutput: boolean): Matrix, Matrix -OR- Matrix
featureMatrix: Matrix containing all data.
returnOriginalOutput: Set whether or not to return predicted matrix instead of value with highest probability.
predictedlabelVector: A vector tcontaining predicted labels generated from the model.
valueVector: A vector that contains the values of predicted labels.
-OR-
Gets all the classes stored in the NeuralNetwork model.
NeuralNetwork:getClassesList(): []
NeuralNetwork:setClassesList(ClassesList: [])
NeuralNetwork:forwardPropagate(featureMatrix: Matrix, saveTables: boolean, doNotDropoutNeurons: boolean): predictedLabelMatrix, forwardPropagateTable, zTable
featureMatrix: Matrix containing all data.
saveTables: Set whether or not the forward propagation table and z table is stored in the model.
doNotDropoutNeurons: Set whether or not to dropout neurons during forward propagation.
predictedLabelMatrix: A matrix containing final layer outputs.
forwardPropagateTable: A table containing matrices where its original values are transformed by selected activation functions.
zTable: A table containing matrices that was produced by each neuron.
NeuralNetwork:backwardPropagate(lossMatrix: Matrix, clearTables: boolean): []
lossMatrix: Matrix containing the loss.
clearTables: Set whether or not to clear forward propagation table and z table is stored in the model after backpropagation is done.
Shows the details of all layers. The details includes the number of neurons, is bias added and so on.
NeuralNetwork:showDetails()
Gets the settings of a particular layer.
NeuralNetwork:getLayer(layerNumber: number): number, boolean, string, number, OptimizerObject, RegularizationObject, number
numberOfNeurons: The number of neurons at that particular layer.
activationFunction: The function to calculate the cost and cost derivaties of each training.
learningRate: The speed at which the model learns. Recommended that the value is set between (0 to 1).
Optimizer: The optimizer object to be added at the last layer.
Regularization: The regularization object to be added at the last layer.
dropoutRate: The probabiliy of a neuron for selected layer number to be dropped out when required. Must be set between 0 and 1. Increasing the rate will cause more neurons more likely to output 0. By default, the dropoutRate is set to 0.
Gets the number of layers.
NeuralNetwork:getNumberOfLayers(): number
Gets the total number of neurons (including the bias if present) at the selected layer number.
NeuralNetwork:getTotalNumberOfNeurons(layerNumber: number): number