[en] This project explores deep artiﬁcial neural networks and their use with Google's open-source library TensorFlow. We begin by laying the theoretical foundations of these networks, covering their motivation, techniques used and some mathematical aspects of their training. Special attention is paid to various regularisation methods which are applied later on. After that, we delve into the computational approach, explaining TensorFlow's operation principles and the necessary concepts for its use, namely the computational graph, variables and execution sessions. Through the ﬁrst example of a deep network, we illustrate the theoretical and TensorFlow-related elements described earlier, applying them to the problem of classifying ﬂowers of the Iris species. We then pave the way for the problem of image classiﬁcation: we comment several higherlevel TensorFlow wrappers (focusing on Slim, a library born within Google itself which is used in the last part of the project), describe the basic principles of convolutional networks and introduce the MNIST problem (automatic handwritten digit recognition), outlining its history and current state of the art. Finally, we create three convolutional networks to tackle MNIST, detailing how such a task is approached with TensorFlow and the workﬂow followed. All three networks reach over 98% classiﬁcation accuracy, going as far as 99.52% in the case of the best one. We conclude with an explanation of the obtained results, relating the structures of the diﬀerent networks with their performance and training cost.

[es] Este proyecto explora las redes neuronales artiﬁciales profundas y su uso con la biblioteca de código abierto TensorFlow de Google. Comenzamos exponiendo los fundamentos teóricos de este tipo de redes, su motivación, técnicas usadas y algunos aspectos matemáticos de su entrenamiento. Prestamos especial atención a diferentes métodos de regularización que serán aplicados posteriormente. A continuación nos centramos en el enfoque computacional, explicando los principios bajo los que opera TensorFlow y los conceptos necesarios para su uso, especialmente el grafo de cálculo, las variables y las sesiones de ejecución. Mediante un primer ejemplo de red profunda, ilustramos los elementos teóricos y de TensorFlow descritos anteriormente, aplicándolos al problema de clasiﬁcación de ﬂores de la especie Iris. Seguidamente preparamos el terreno para abordar el problema de clasiﬁcación de imágenes: comentamos diferentes wrappers de TensorFlow de más alto nivel (poniendo el foco en Slim, librerá nacida dentro del propio Google que usamos en la última parte del trabajo), describimos los principios básicos de las redes convolucionales e introducimos el problema MNIST (reconocimiento automatizado de dígitos escritos a mano), recorriendo su historia y el estado del arte actual. Finalmente, implementamos tres redes convolucionales para abordar MNIST, detallando cómo se enfoca una tarea así con TensorFlow y el ﬂujo de trabajo seguido. Las tres redes alcanzan más de un 98% de precisón en clasiﬁcación, llegando al 99.52% en el caso de la mejor. Concluimos con una explicación de los resultados obtenidos, relacionando las estructuras de las diferentes redes con su rendimiento y coste de entrenamiento.