# Deep Learning of GNSS Acquisition
## 3 Deep Learning Method for GNSS Acquisition
### Model Structure  
CNNs are one of the most popular models for deep learning, with demonstrated performance in label classification in the context of image datasets. A CNN can have tens or hundreds of layers, where each of these layers learn to identify different features of an image [52; 53]. At each layer, a cascade of filters is applied to input images, whose parameters were previously learned from pairs of known input/output images. The output of each layer is used as an input to the next layer sequentially. Figure 2 illustrates a CNN structure, as employed in this work. In contrast to other neural networks such as MLPs, CNNs are composed of an input, convolutional layers (whereby the image is filtered through convolution with filters learned from the data), several fully connected hidden layers, and an output layer. During training, the input size of the CNN is fixed; the input goes through a stack of convolutional layers with the same or different filter sizes. In each convolution layer, the filter sweeps the input image from left to right and up to down by using a stride with a size of 2 pixels, which is the number of pixels for each time the filter shifts. In the end, the convolution layers are followed by fully connected (FC) layers and a final _softmax_ layer, which is used for classification purposes and produces the desired class probabilities [53]. The CNN structure is shown in the central box of Figure 2, which features several convolution and fully connected layers. Each convolution layer consists of a number of filters (C), with filter size (\(F\)) and channel size (\(D\)). The \(\ell\)-th convolutional layer transforms its input images from the previous layer with dimensions of \(W_{\ell-1}\times H_{\ell-1}\times D_{\ell-1}\) through a set of convolution filters, each of these filters activates certain features from the images and creates an output with dimensions of \(W_{\ell}\times H_{\ell}\times D_{\ell}\) as an input to the next layer. Notice that initial dimensions are such that \(W_{0}=n_{\tau}\) and \(H_{0}=n_{f}\), whereas \(D_{\ell}=1\), \(\forall\ell\), since the data are matrices. After each layer, a batch normalization is used to speed up learning, and an activation function is employed before generating the layer output. The number of convolution layers depends on the structure that is used, where the tradeoff is between complexity (reduced number of convolutional layers) and performance (high accuracy). After the last convolution layer, the CNN architecture has a set of fully connected layers in charge of the classification task, and the output of these last layer has the dimensions of the number of classes (two in the case of this article, where a binary test is solved in (2)) that will be predicted. The output would be the predicted probabilities for each class, as required to compute the test in (16). The main objectives of this work are to classify the absence/presence of satellite signals in CAF maps, as well as to accurately estimate their delay/Doppler parameters in case of their positive detection. To achieve the latter, a CAF map is computed in a dense delay/Doppler grid--as it is common for standard acquisition schemes--which is then fed to the NN model in charge of producing the posterior class probabilities. As a consequence, the input matrix size can be potentially large (i.e., \(n_{\tau}n_{f}\)), which might not only pose a computational complexity limit but also increase the expense, since the processing device needs a GPU with larger memory. In order to alleviate this issue, a sliding scheme is proposed in this work, whereby the large-input CAF matrix is scanned using lower dimensional images as the input to the NN classifier. More precisely, the input dataset image is split into several subimages, each corresponding to a test delay/Doppler value. The objective being to reduce the initial dimensions \(W_{0}\) and \(H_{0}\), such that the processing is computationally affordable and parallelized.