An attribute of CNNs which is particularly appealing is their ability to exhibit a level of positional invariance, i.e. patterns in the 2D dataset can be identified regardless of their exact positions. This is the direct effect of learning the filters after their global application to a whole image or array. The final stage of the customised CNN architectures, following the convolution and pooling layers, is a series of dense layers. These receive a flattened vector of the filter values as their input, and produce the voltage estimation at the output. A total of 18 CNN architectures were tested in this study, having different sizes, and are listed in Table . FNN and CNN models were created and trained using the Tensorflow Python library. The Adam optimiser was used and the learning rate was equal to 0.001 for the first 300 epochs, beyond which point it was set to decay linearly, to reach one-fifth of the starting value on epoch 8000. In cases where dropout was applied, the starting learning rate was set to 0.0005 because this produced more stable training (with less noisy fluctuations of the training and validation losses over progressive epochs). The ReLU activation function was used in all layers of regression models, including the convolutional layers of CNNs. This excludes the output layer which produces the voltage estimation, where no activation was applied. The loss function was the mean absolute error (MAE). SVM and Linear regression models were created and trained using the scikit-learn Python library. In SVM models the default settings of scikit-learn were used, including the radial basis function kernel.