Main Content

Neural Network Object Properties

These properties define the basic features of a network. Neural Network Subobject Properties describes properties that define network details.

General

Here are the general properties of neural networks.

net.name

This property consists of a string defining the network name. Network creation functions, such as feedforwardnet, define this appropriately. But it can be set to any string as desired.

net.userdata

This property provides a place for users to add custom information to a network object. Only one field is predefined. It contains a secret message to all Deep Learning Toolbox™ users:

net.userdata.note

Architecture

These properties determine the number of network subobjects (which include inputs, layers, outputs, targets, biases, and weights), and how they are connected.

net.numInputs

This property defines the number of inputs a network receives. It can be set to 0 or a positive integer.

Clarification.  The number of network inputs and the size of a network input are not the same thing. The number of inputs defines how many sets of vectors the network receives as input. The size of each input (i.e., the number of elements in each input vector) is determined by the input size (net.inputs{i}.size).

Most networks have only one input, whose size is determined by the problem.

Side Effects.  Any change to this property results in a change in the size of the matrix defining connections to layers from inputs, (net.inputConnect) and the size of the cell array of input subobjects (net.inputs).

net.numLayers

This property defines the number of layers a network has. It can be set to 0 or a positive integer.

Side Effects.  Any change to this property changes the size of each of these Boolean matrices that define connections to and from layers:

net.biasConnect
net.inputConnect
net.layerConnect
net.outputConnect

and changes the size of each cell array of subobject structures whose size depends on the number of layers:

net.biases
net.inputWeights
net.layerWeights
net.outputs

and also changes the size of each of the network's adjustable parameter's properties:

net.IW
net.LW
net.b

net.biasConnect

This property defines which layers have biases. It can be set to any N-by-1 matrix of Boolean values, where Nl is the number of network layers (net.numLayers). The presence (or absence) of a bias to the ith layer is indicated by a 1 (or 0) at

net.biasConnect(i)

Side Effects.  Any change to this property alters the presence or absence of structures in the cell array of biases (net.biases) and, in the presence or absence of vectors in the cell array, of bias vectors (net.b).

net.inputConnect

This property defines which layers have weights coming from inputs.

It can be set to any Nl × Ni matrix of Boolean values, where Nl is the number of network layers (net.numLayers), and Ni is the number of network inputs (net.numInputs). The presence (or absence) of a weight going to the ith layer from the jth input is indicated by a 1 (or 0) at net.inputConnect(i,j).

Side Effects.  Any change to this property alters the presence or absence of structures in the cell array of input weight subobjects (net.inputWeights) and the presence or absence of matrices in the cell array of input weight matrices (net.IW).

net.layerConnect

This property defines which layers have weights coming from other layers. It can be set to any Nl × Nl matrix of Boolean values, where Nl is the number of network layers (net.numLayers). The presence (or absence) of a weight going to the ith layer from the jth layer is indicated by a 1 (or 0) at

net.layerConnect(i,j)

Side Effects.  Any change to this property alters the presence or absence of structures in the cell array of layer weight subobjects (net.layerWeights) and the presence or absence of matrices in the cell array of layer weight matrices (net.LW).

net.outputConnect

This property defines which layers generate network outputs. It can be set to any 1 × Nl matrix of Boolean values, where Nl is the number of network layers (net.numLayers). The presence (or absence) of a network output from the ith layer is indicated by a 1 (or 0) at net.outputConnect(i).

Side Effects.  Any change to this property alters the number of network outputs (net.numOutputs) and the presence or absence of structures in the cell array of output subobjects (net.outputs).

net.numOutputs (read only)

This property indicates how many outputs the network has. It is always equal to the number of 1s in net.outputConnect.

net.numInputDelays (read only)

This property indicates the number of time steps of past inputs that must be supplied to simulate the network. It is always set to the maximum delay value associated with any of the network's input weights:

numInputDelays = 0;
for i=1:net.numLayers
  for j=1:net.numInputs
    if net.inputConnect(i,j)
      numInputDelays = max( ...
        [numInputDelays net.inputWeights{i,j}.delays]);
    end
  end
end

net.numLayerDelays (read only)

This property indicates the number of time steps of past layer outputs that must be supplied to simulate the network. It is always set to the maximum delay value associated with any of the network's layer weights:

numLayerDelays = 0;
for i=1:net.numLayers
  for j=1:net.numLayers
    if net.layerConnect(i,j)
      numLayerDelays = max( ...
       [numLayerDelays net.layerWeights{i,j}.delays]);
    end
  end
end

net.numWeightElements (read only)

This property indicates the number of weight and bias values in the network. It is the sum of the number of elements in the matrices stored in the two cell arrays:

net.IW
new.b

Subobject Structures

These properties consist of cell arrays of structures that define each of the network's inputs, layers, outputs, targets, biases, and weights.

The properties for each kind of subobject are described in Neural Network Subobject Properties.

net.inputs

This property holds structures of properties for each of the network's inputs. It is always an Ni × 1 cell array of input structures, where Ni is the number of network inputs (net.numInputs).

The structure defining the properties of the ith network input is located at

net.inputs{i}

If a neural network has only one input, then you can access net.inputs{1} without the cell array notation as follows:

net.input

Input Properties.  See Inputs for descriptions of input properties.

net.layers

This property holds structures of properties for each of the network's layers. It is always an Nl × 1 cell array of layer structures, where Nl is the number of network layers (net.numLayers).

The structure defining the properties of the ith layer is located at net.layers{i}.

Layer Properties.  See Layers for descriptions of layer properties.

net.outputs

This property holds structures of properties for each of the network's outputs. It is always a 1 × Nl cell array, where Nl is the number of network outputs (net.numOutputs).

The structure defining the properties of the output from the ith layer (or a null matrix []) is located at net.outputs{i} if net.outputConnect(i) is 1 (or 0).

If a neural network has only one output at layer i, then you can access net.outputs{i} without the cell array notation as follows:

net.output

Output Properties.  See Outputs for descriptions of output properties.

net.biases

This property holds structures of properties for each of the network's biases. It is always an Nl × 1 cell array, where Nl is the number of network layers (net.numLayers).

The structure defining the properties of the bias associated with the ith layer (or a null matrix []) is located at net.biases{i} if net.biasConnect(i) is 1 (or 0).

Bias Properties.  See Biases for descriptions of bias properties.

net.inputWeights

This property holds structures of properties for each of the network's input weights. It is always an Nl × Ni cell array, where Nl is the number of network layers (net.numLayers), and Ni is the number of network inputs (net.numInputs).

The structure defining the properties of the weight going to the ith layer from the jth input (or a null matrix []) is located at net.inputWeights{i,j} if net.inputConnect(i,j) is 1 (or 0).

Input Weight Properties.  See Input Weights for descriptions of input weight properties.

net.layerWeights

This property holds structures of properties for each of the network's layer weights. It is always an Nl ×Nl cell array, where Nl is the number of network layers (net.numLayers).

The structure defining the properties of the weight going to the ith layer from the jth layer (or a null matrix []) is located at net.layerWeights{i,j} if net.layerConnect(i,j) is 1 (or 0).

Layer Weight Properties.  See Layer Weights for descriptions of layer weight properties.

Functions

These properties define the algorithms to use when a network is to adapt, is to be initialized, is to have its performance measured, or is to be trained.

net.adaptFcn

This property defines the function to be used when the network adapts. It can be set to the name of any network adapt function. The network adapt function is used to perform adaption whenever adapt is called.

[net,Y,E,Pf,Af] = adapt(NET,P,T,Pi,Ai)

For a list of functions, type help nntrain.

Side Effects.  Whenever this property is altered, the network's adaption parameters (net.adaptParam) are set to contain the parameters and default values of the new function.

net.adaptParam

This property defines the parameters and values of the current adapt function. Call help on the current adapt function to get a description of what each field means:

help(net.adaptFcn)

net.derivFcn

This property defines the derivative function to be used to calculate error gradients and Jacobians when the network is trained using a supervised algorithm, such as backpropagation. You can set this property to the name of any derivative function.

For a list of functions, type help nnderivative.

net.divideFcn

This property defines the data division function to be used when the network is trained using a supervised algorithm, such as backpropagation. You can set this property to the name of a division function.

For a list of functions, type help nndivision.

Side Effects.  Whenever this property is altered, the network's adaption parameters (net.divideParam) are set to contain the parameters and default values of the new function.

net.divideParam

This property defines the parameters and values of the current data-division function. To get a description of what each field means, type the following command:

help(net.divideFcn)

net.divideMode

This property defines the target data dimensions which to divide up when the data division function is called. Its default value is 'sample' for static networks and 'time' for dynamic networks. It may also be set to 'sampletime' to divide targets by both sample and timestep, 'all' to divide up targets by every scalar value, or 'none' to not divide up data at all (in which case all data is used for training, none for validation or testing).

net.initFcn

This property defines the function used to initialize the network's weight matrices and bias vectors. The initialization function is used to initialize the network whenever init is called:

net = init(net)

Side Effects.  Whenever this property is altered, the network's initialization parameters (net.initParam) are set to contain the parameters and default values of the new function.

net.initParam

This property defines the parameters and values of the current initialization function. Call help on the current initialization function to get a description of what each field means:

help(net.initFcn)

net.performFcn

This property defines the function used to measure the network’s performance. The performance function is used to calculate network performance during training whenever train is called.

[net,tr] = train(NET,P,T,Pi,Ai)

For a list of functions, type help nnperformance.

Side Effects.  Whenever this property is altered, the network's performance parameters (net.performParam) are set to contain the parameters and default values of the new function.

net.performParam

This property defines the parameters and values of the current performance function. Call help on the current performance function to get a description of what each field means:

help(net.performFcn)

net.plotFcns

This property consists of a row cell array of strings, defining the plot functions associated with a network. The neural network training window, which is opened by the train function, shows a button for each plotting function. Click the button during or after training to open the desired plot.

net.plotParams

This property consists of a row cell array of structures, defining the parameters and values of each plot function in net.plotFcns. Call help on the each plot function to get a description of what each field means:

help(net.plotFcns{i})

net.trainFcn

This property defines the function used to train the network. It can be set to the name of any of the training functions, which is used to train the network whenever train is called.

[net,tr] = train(NET,P,T,Pi,Ai)

For a list of functions, type help nntrain.

Side Effects.  Whenever this property is altered, the network's training parameters (net.trainParam) are set to contain the parameters and default values of the new function.

net.trainParam

This property defines the parameters and values of the current training function. Call help on the current training function to get a description of what each field means:

help(net.trainFcn)

Weight and Bias Values

These properties define the network's adjustable parameters: its weight matrices and bias vectors.

net.IW

This property defines the weight matrices of weights going to layers from network inputs. It is always an Nl × Ni cell array, where Nl is the number of network layers (net.numLayers), and Ni is the number of network inputs (net.numInputs).

The weight matrix for the weight going to the ith layer from the jth input (or a null matrix []) is located at net.IW{i,j} if net.inputConnect(i,j) is 1 (or 0).

The weight matrix has as many rows as the size of the layer it goes to (net.layers{i}.size). It has as many columns as the product of the input size with the number of delays associated with the weight:

net.inputs{j}.size * length(net.inputWeights{i,j}.delays)

The preprocessing function net.inputs{i}.processFcns is specified as 'removeconstantrows' by default in some networks. In this case, if the network input X contains m rows where all row elements have the same value, the weight matrix has m less columns than the above product. For more details about the network input X, see train.

These dimensions can also be obtained from the input weight properties:

net.inputWeights{i,j}.size

net.LW

This property defines the weight matrices of weights going to layers from other layers. It is always an Nl × Nl cell array, where Nl is the number of network layers (net.numLayers).

The weight matrix for the weight going to the ith layer from the jth layer (or a null matrix []) is located at net.LW{i,j} if net.layerConnect(i,j) is 1 (or 0).

The weight matrix has as many rows as the size of the layer it goes to (net.layers{i}.size). It has as many columns as the product of the size of the layer it comes from with the number of delays associated with the weight:

net.layers{j}.size * length(net.layerWeights{i,j}.delays)

These dimensions can also be obtained from the layer weight properties:

net.layerWeights{i,j}.size

net.b

This property defines the bias vectors for each layer with a bias. It is always an Nl × 1 cell array, where Nl is the number of network layers (net.numLayers).

The bias vector for the ith layer (or a null matrix []) is located at net.b{i} if net.biasConnect(i) is 1 (or 0).

The number of elements in the bias vector is always equal to the size of the layer it is associated with (net.layers{i}.size).

This dimension can also be obtained from the bias properties:

net.biases{i}.size

See Also

| |

Related Topics