Brevet FR3050855A1 (20171103)
REVENDICATIONS1. Calculateur pour calculer au moins une couche de convolution d'un réseau de neurones convolutionnel impulsionnel, en réponse à un événement d'entrée, le réseau de neurones convolutionnel comprenant au moins un noyau de convolution, le noyau de convolution comprenant des coefficients de poids, caractérisé en ce qu'il comprend au moins un module de convolution (20) configuré pour calculer ladite au moins une couche de convolution, chaque module de convolution comprenant un ensemble d'unités de calcul élémentaire (200) pour calculer la valeur interne des neurones de la couche de convolution déclenchés par ledit événement d'entrée, chaque module de convolution (20) étant configuré pour mettre en correspondance les coefficients de poids du noyau avec certaines au moins des unités de calcul élémentaires du module en parallèle, le nombre d'unités de calcul élémentaires étant indépendant du nombre de neurones de la couche de convolution.\n<CLM>\1\tCalculateur selon la revendication 1, caractérisé en ce que, pour chaque événement d'entrée, chaque unité de calcul (200) est associée à un coefficient de poids du noyau de convolution, et en ce que chaque unité de calcul élémentaire est configurée pour calculer la valeur d'un ensemble de neurones indépendants déclenchés par des événements d'entrée, en fonction du coefficient de poids associé à ladite unité de calcul élémentaire.\n<CLM>\1\tCalculateur selon la revendication 1, caractérisé en ce que chaque module de convolution (20) comprend au moins une mémoire (201) pour stocker les coefficients de poids d'au moins un noyau de convolution et en ce que ladite mémoire de coefficients de poids est accessible en parallèle par lesdites unités de calcul élémentaires (200).\n<CLM>\1\tCalculateur selon la revendication 3, caractérisé en ce que chaque module de convolution (20) comprend une unité de routage (202) configurée pour distribuer les coefficients de poids de la mémoire (201) aux unités de calcul élémentaires (200) au moyen d'un bus de données comprenant un ensemble de lignes portant les coefficients de poids, et en ce que chaque module de convolution (20) est configuré pour calculer les adresses des coefficients de poids dans ledit bus de données à affecter aux unités de calcul élémentaire (200) en fonction de l'événement d'entrée, l'unité de routage (202) utilisant les adresses de coefficients de poids pour distribuer les coefficients de poids de ladite mémoire (201) aux unités de calcul élémentaires. 3050855 47\n<CLM>\1\tCalculateur selon l'une des revendications précédentes, caractérisé en ce que chaque module de convolution (20) comprend au moins une mémoire de valeurs de neurones (2002) pour stocker les valeurs internes des neurones calculées par les unités de calcul élémentaires (200) et en ce que chaque module de convolution est configuré pour calculer, 5 pour chaque événement d'entrée et pour chaque unité de calcul élémentaire (200), une adresse de stockage des valeurs internes de neurones calculées par ladite unité de calcul dans ladite mémoire de valeurs de neurones (2002) à partir de l'événement d'entrée et d'au moins un paramètre de la couche de convolution à traiter, chaque unité de calcul élémentaire (200) étant apte à sélectionner une adresse de stockage pour stocker les 10 valeurs internes des neurones calculées par ladite unité de calcul.\n<CLM>\1\tCalculateur selon la revendication 5, caractérisé en ce que chaque couche de convolution comprend au moins une carte de sortie, chaque carte de sortie comprenant un ensemble de neurones de sortie connectés à des neurones d'entrée d'au moins une partie d'une carte 15 d'entrée du réseau de neurones, le noyau de convolution étant représenté par une matrice de convolution dans un repère de dimensions donnée, l'événement d'entrée étant défini par une adresse d'entrée dans ledit repère, ladite adresse d'entrée comprenant les coordonnées de l'événement d'entrée sur la carte d'entrée, et en ce que chaque unité de calcul élémentaire est associée à des coordonnées correspondant aux coordonnées du coefficient 20 de poids associé à ladite matrice de convolution dans ledit repère, chaque unité de calcul élémentaire (200) étant apte à sélectionner ladite adresse de stockage en fonction des coordonnées de ladite unité de calcul dans ledit repère.\n<CLM>\1\tCalculateur selon la revendication 6, caractérisé en ce que lesdits paramètres de la 25 couche de convolution comprennent au moins un paramètre choisi parmi la taille de la matrice de convolution et la taille de la matrice de sortie.\n<CLM>\1\tCalculateur selon l'une des revendications précédentes 5 à 7, caractérisé en ce que chaque module de convolution (20) comprend au moins une mémoire de valeurs de 30 neurones (2002) externe aux unités de calcul élémentaires (200).\n<CLM>\1\tCalculateur selon l'une des revendications précédentes 5 à 7, caractérisé en ce que chaque module de convolution (20) comprend une mémoire de valeurs de neurones (2002) agencée dans chaque unité de calcul élémentaire (200). 35\n<CLM>\1\tCalculateur selon l'une des revendications précédentes, caractérisé en ce que chaque unité de calcul élémentaire (200) est configurée pour calculer la valeur interne de chaque 3050855 48 neurone déclenché par ledit événement d'entrée selon un modèle computationnel de neurone associé à une fonction algébrique non linéaire.\n<CLM>\1\tCalculateur selon la revendication 10, caractérisé en ce que chaque unité de calcul 5 comprend une unité logique de calcul (2003) configurée pour calculer une valeur de sortie d'un neurone en appliquant ladite fonction associée au modèle.\n<CLM>\1\tCalculateur selon l'une des revendications précédentes, caractérisé en ce que la valeur interne d'un neurone calculée par une unité de calcul donnée est l'intégrale temporelle des 10 valeurs entrées reçues par ledit neurone, chaque valeur d'entrée étant pondérée par le coefficient de poids associé à ladite unité de calcul pour chaque valeur d'entrée du neurone.\n<CLM>\1\tCalculateur selon l'une des revendications 6 à 12, caractérisé en ce que chaque unité de calcul comprend en outre une unité de sortie (2004) configurée pour déterminer l'adresse de 15 sortie sur la carte de sortie (14) des neurones déclenchés et pour communiquer ladite adresse de sortie aux autres modules de convolution (20) du calculateur.\n<CLM>\1\tCalculateur selon l'une des revendications précédentes, caractérisé en ce que les modules (20) de convolution sont interconnectés par un système d'interconnexion. 20\n<CLM>\1\tCalculateur selon l'une des revendications précédentes, caractérisé en ce que le nombre d'unités de calcul élémentaires est au moins égal au nombre de poids synaptiques du noyau de convolution.