Artificial neural networks are mathematical models inspired by their biological counterparts. A neural network is an information processing system used to approximate functions of large numbers of arguments. Neural networks are applied to solve different kinds of machine learning tasks, such as image and video processing [Szegedy13], classification, text recognition or natural language understanding, and others [LeCun15]. At a high level, in Intel DAAL a neural network comprises:
Interconnected computation devices, or layers of neurons.
The topology, which defines the logical structure of the network. The topology defines layers with their parameters and describes the connections between those layers.
The model, which contains information about layer structures and all the data associated with the layers and about weights and biases to be optimized.
The optimization algorithm. It updates weights and biases at the training stage, and it is not used at the prediction stage.
A layer can perform forward and backward computations. For a list of available layers and descriptions of their usage, see Layers. The information about the order of layers is stored in the model. Intel DAAL supports graph organization of layers and has special layers that used for that.
In addition to the order of layers, the model also contains information about weights and biases being optimized in each computation step using the optimization solver.
Intel DAAL provides different optimization solvers. For the descriptions and usages of the solvers, see Optimization Solvers.
For data storage and computations, neural networks use tensors, multidimensional data structures. For more details, see Tensors.
Flexibility of Intel DAAL allows you to create your own neural network configuration by choosing the topology, as well as number of layers and layer types. You can even create your own layers or optimization solvers by deriving from relevant classes.