FR 3090163 A1 20200619 FR 1873141 A 20181218 Description Titre de l'invention : Processeur de traitement de données, procédé et programme d'ordinateur correspondant. 1. Domaine Technique [0001] L'invention se rapporte à la matérialisation de réseaux de neurones. Plus particu- lièrement, l'invention se rapporte à la mise en oeuvre physique de réseaux de neurones adaptables et configurables. Plus spécifiquement, encore, l'invention se rapporte à la mise en oeuvre d'un réseau de neurones génériques dont la configuration et le fonctionnement peut être adaptée en fonction des besoins. 2. Art antérieur [0002] Dans le domaine du traitement informatisé de données, un réseau de neurones est un système numérique dont la conception est originellement inspirée du fonctionnement des neurones biologiques. Un réseau de neurones est plus généralement modélisé sous la forme d'un système comprenant une algorithmique de traitement et des données statistiques (comprenant notamment des poids). L'algorithmique de traitement permet de traiter des données d'entrée, lesquelles sont combinées avec les données statistiques pour obtenir des résultats en sortie. L'algorithmique de traitement consiste à définir les calculs qui sont réalisées sur les données d'entrée en combinaison avec les données statistiques du réseau pour fournir des résultats de sortie. Parallèlement, les réseaux de neurones informatisés sont divisés en couches. Ils présentent généralement une couche d'entrée, une ou plusieurs couches intermédiaires et une couche de sortie. Le fonctionnement général du réseau de neurones informatisé, et donc le traitement général appliqué sur les données d'entrées consiste à mettre en oeuvre un processus algorithmique itératif de traitement, dans lequel les données d'entrées sont traitées par la couche d'entrée, laquelle produit des données de sortie, ces données de sortie devenant des données d'entrées de la couche suivante et ainsi de suite, autant de fois qu'il y a de couches, jusqu'à obtenir les données finales de sortie, qui sont délivrées par la couche de sortie. 100031 Comme l'objet initial du réseau de neurones artificiels était de mimer le fonc- tionnement d'un réseau de neurones biologiques, l'algorithmique utilisée pour combiner les données d'entrée et les données statistiques d'une couche du réseau comprend des traitements qui tentent d'imiter le fonctionnement d'un neurone biologique. On considère ainsi, dans un réseau de neurones artificiels (simplement appelé réseau de neurones dans la suite), qu'un neurone comprend généralement d'une part une fonction de combinaison et une fonction d'activation. Cette fonction de combinaison et cette fonction d'activation sont mises en oeuvre de manière informatisée par 2 l'utilisation d'un algorithme associé au neurone ou à un ensemble de neurones situés dans une même couche. [0004] La fonction de combinaison sert à combiner les données d'entrées avec les données statistiques (les poids synaptiques). Les données d'entrées sont matérialisées sous la forme d'un vecteur, chaque point du vecteur représentant une valeur donnée. Les valeurs statistiques (i.e. poids synaptiques) sont également représentées par un vecteur. La fonction de combinaison est donc formalisée comme étant une fonction vecteurà-scalaire, ainsi : dans les réseaux de neurones de type MLP (perceptron multicouches), un calcul d'une combinaison linéaire des entrées est effectué, c'est-à-dire que la fonction de combinaison renvoie le produit scalaire entre le vecteur des entrées et le vecteur des poids synaptiques ; dans les réseaux de neurones de type RBF (« radial basis futzetion »), un calcul de la distance entre les entrées est effectué, c'est-à-dire que la fonction de combinaison renvoie la norme euclidienne du vecteur issu de la différence vectorielle entre le vecteur d'entrée et le vecteur correspondant aux poids synaptiques. [0005] La fonction d'activation, pour sa part, est utilisée pour effectuer une rupture de linéarité dans le fonctionnement du neurone. Les fonctions de scuillage présentent généralement trois intervalles : en dessous du seuil, le neurone est non-actif (souvent dans ce cas, sa sortie vaut 0 ou -1) ; aux alentours du seuil, une phase de transition ; au-dessus du seuil, le neurone est actif (souvent dans ce cas, sa sortie vaut 1). [0006] Parmi les fonctions d'activation classiques, on retrouve par exemple : La fonction sigmoïde ; La fonction tangente hyperbolique ; La fonction de Heaviside. [0007] D'innombrables publications portent sur les réseaux de neurones. D'une manière générale, ces publications portent sur des aspects théoriques des réseaux de neurones (comme la recherche de nouvelles fonctions d'activations, ou encore sur la gestion des couches, ou encore sur la rétroaction ou encore sur l'apprentissage ou plus précisément sur la descente de gradient dans les sujets relatifs au « machine learning »). D'autres publications portent sur l'utilisation pratique de systèmes mettant en oeuvre des réseaux de neurones informatisés pour répondre à telle ou telle problématique. Moins fréquemment, on trouve également des publications relatives à l'implémentation, sur un composant spécifique, de réseaux de neurones particuliers. C'est par exemple le cas de la publication « FPGA Implementation of Convolutional Neural Networks with Fixed - 3 Point Calculations » de Roman A. Solovye et Al (2018), dans laquelle il est proposé de localiser les calculs effectués au sein d'un réseau de neurones sur un composant matériel. L'implémentation matérielle proposée dans ce document est cependant limitée en termes de portée. En effet, elle se limite à la mise en oeuvre d'un réseau de neurones convolutif dans lequel de nombreuses réductions sont réalisées. Elle apporte cependant une mise en oeuvre de calculs en virgule fixe ou en virgule flottante. L'article « Implementation of Fixed-point Neuron Models with Threshold, Romp and Sigtetoid Activation Functions » de Lei Zhang (2017) porte également sur la mise en oeuvre d'un réseau dc neurones comprenant la mise en oeuvre de calculs à virgule fixe pour un neurone particulier et trois fonctions d'activation particulières, unitairement implémentées. [0008] Cependant, les solutions décrites dans ces articles ne permettent pas de résoudre les problématiques d'implémentation matérielles de réseaux de neurones génériques, à savoirs des réseaux de neurones implémentant des neurones généraux, qui peuvent mettre en oeuvre une multiplicité de type de réseaux de neurones, incluant des réseaux de neurones mixtes comprenant plusieurs fonctions d'activation et/ou plusieurs fonctions de combinaison. [0009] Il existe donc un besoin de fournir un dispositif qui permette de mettre en oeuvre un réseau de neurones, implémentant des neurones de manière fiable et efficace, qui soit de plus reconfigurable et qui puisse prendre place sur une surface de processeur réduite. 3. Résumé de l'invention [0010] L'invention ne pose pas au moins un des problèmes de l'art antérieur. Plus particu- lièrement, l'invention se rapporte à un processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement et une unité de calcul, le dit processeur étant caractérisé en ce que l'unité de calcul comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable de l'ensemble de neurones configurables comprenant un module de calcul de fonctions de combinaison et un module de calcul de fonctions d'activation, chaque module de calcul de fonctions d'activation comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter panni au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation. [0011] Ainsi, l'invention permet de paramétrer, à l'exécution, un ensemble de neurones re- configurables, afin que ceux-ci exécutent une fonction prédéterminée selon le mot de commande fourni aux neurones lors de l'exécution. Le mot de commande, reçu dans un espace mémoire, pouvant être dédié, du neurone reconfigurable, peut être différent pour chaque couche d'un réseau de neurones particulier, et ainsi faire partie des pa- ramètres du réseau de neurones à exécuter (implémenter) sur le processeur en question. [0012] Selon un mode de réalisation particulier, caractérisé en ce que les au moins deux fonctions d'activation exécutables par le module dc calcul de fonctions d'activation appartiennent au groupe comprenant : la fonction sigmoïde ; la fonction tangente hyperbolique ; la fonction gaussienne ; la fonction RELU (« Rertified linear Unit »). [0013] Ainsi, un neurone reconfigurable est en mesure de mettre en oeuvre les principales fonctions d'activation utilisées pour l'industrie. [0014] Selon un mode de réalisation particulier, le module de calcul de fonctions d'activation est configure pour effectuer une approximation desdites au moins deux fonctions d'activation. [0015] Ainsi, la capacité de calcul du processeur neuronal embarquant un ensemble de neurones reconfigurables peut être réduite entraînant une réduction de la taille, dc la consommation et donc de l'énergie nécessaire à la mise en oeuvre de la technique proposée par rapport aux techniques existantes. [0016] Selon une caractéristique particulière, le module de calcul dc fonctions d'activation comprend un sous module dc calcul d'une opération dc base correspondant à une approximation du calcul de la sigmoïde de la valeur absolue de Xx : [0017] [Math 1] f x = 1 1,11,x1 1 H- e 100181 Ainsi, à l'aide d'une opération de base, il est possible (l'approcher, par une série de calculs simples, le résultat d'une fonction d'activation particulière, définie par un mot de commande. 100191 Selon un mode de réalisation particulier, l'approximation desdites au moins deux fonctions d'activation est effectuée en fonction d'un paramètre d'approximation X. 100201 Le paramètre d'approximation X peut ainsi être utilisé, conjointement au mot de commande, pour définir le comportement de l'unité de calcul de l'opération de base pour calculer une approximation circonstanciée dc la fonction d'activation du mot de commande. En d'autres termes, le mot de commande route le calcul (réalise un routage du calcul) à effectuer dans l'unité de calcul de la fonction d'activation tandis que le paramètre d'approximation X conditionne (paramètre) ce calcul. [0021] Selon une caractéristique particulière, l'approximation desdites au moins deux fonctions d'activation est effectuée en configurant le module de calcul de fonctions d'activation pour que les calculs soient effectués en virgule fixe ou virgule flottante. [0022] Lorsqu'effectué en virgule fixe, ceci permet avantageusement de réduire encore les ressources nécessaires à la mise en oeuvre de la technique proposée, et donc de réduire encore la consommation en énergie. Une telle implémentation est avantageuse pour des dispositifs à faible capacité/faible consommation tels que les objets connectés. [0023] Selon une caractéristique particulière, le nombre de bits associés aux calculs en virgule fixe ou virgule flottante est paramétré pour chaque couche du réseau. Ainsi, un paramètre complémentaire peut être enregistré dans les ensembles de paramètres de couches du réseau de neurones. [0024] Selon un mode de réalisation particulier, le processeur de traitement de données comprend une mémoire de stockage de configuration du réseau au sein de laquelle des paramètres (PS, cmd, k) d'exécution de réseau de neurones sont enregistrés. [0025] Selon une autre implémentation, l'invention se rapporte également à un procédé de traitement de données, ledit procédé étant mis en oeuvre par un processeur de traitement de données comprenant au moins une mémoire de traitement et une unité de calcul, l'unité de calcul comprend un ensemble d'unités de calculs configurables appelées neurones configurablcs, chaque neurone configurablc de l'ensemble de neurones configurablcs comprenant un module de calcul de fonctions de combinaison et un module de calcul de fonctions d'activation, le procédé comprenant : une étape d' initialisation comprenant le chargement dans la mémoire de traitement d'un un ensemble de données applicativcs et le chargement d'un ensemble de données, correspondant à l'ensemble des poids synaptiques et des configurations des couches dans la mémoire de stockage de configuration du réseau ; l'exécution du réseau de neurone, selon une mise en oeuvre itérative, comprenant pour chaque couche, l'application d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation, l'exécution délivrant des données traitées ; la transmission des données traitées à une application appelante. [0026] Les avantages procurés par un tel procédé sont similaires à ceux précédemment énoncés. Le procédé peut cependant être mis en oeuvre sur tout type de processeur. [0027] Selon un mode de réalisation particulier, l'exécution du réseau de neurone comprend au moins une itération des étapes suivantes, pour une couche courante du réseau de neurones : transmission d'au moins un mot de commande, définissant la fonction de combinaison et/ou la fonction d'activation mise en oeuvre pour la couche courante ; chargement des poids synaptiques de la couche courante ; chargement des données d'entrée en provenance de la mémoire de stockage 6 temporaire ; calcul de la fonction de combinaison, pour chaque neurone et chaque vecteur d'entrée, en fonction dudit au moins un mot de commande, délivrant, pour chaque neurone utilisé, un scalaire intermédiaire ; calcul de la fonction d'activation en fonction du scalaire intermédiaire, et dudit au moins un deuxième mot de commande, délivrant, pour chaque neurone utilisé, un résultat d'activation ; enregistrement du résultat d'activation dans la mémoire de stockage temporaire. [0028] Ainsi, l'invention permet, au sein d'un processeur dédié (ou bien au sein d'un procédé de traitement spécifique) de réaliser des optimisations des calculs des fonctions non linéaires en effectuant des factorisations de calculs et des approximations qui permettent de diminuer la charge de calcul des opérations, notamment au niveau de la fonction d'activation. [0029] Il est entendu, dans le cadre de la description de la présente technique selon l'invention, qu'une étape de transmission d'une information et/ou d'un message d'un premier dispositif à un deuxième dispositif, correspond au moins partiellement, pour ce deuxième dispositif à une étape de réception de l'information et/ou du message transmis, que cette réception et cette transmission soit directe ou qu'elle s'effectue par l'intermédiaire d'autres dispositifs de transport, de passerelle ou d'intermédiation, incluant les dispositifs déciits dans la présente selon l'invention. [0030] Selon une implémentation générale, les différentes étapes des procédés selon l'invention sont mises en oeuvre par un ou plusieurs logiciels ou programmes d'ordinateur, comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un dispositif d'exécution selon l'invention et étant conçu pour commander l'exécution des différentes étapes des procédés, mis en oeuvre au niveau du terminal de communication, du dispositif électronique d'exécution et/ou du serveur distant, dans le cadre d'une répartition des traitements à effectuer et déterminés par un code source scripté. [0031] En conséquence, l'invention vise aussi des programmes, susceptibles d'être exécutés par un ordinateur ou par un processeur de données, ces progranunes comportant des instructions pour commander l'exécution des étapes des procédés tel que mentionnés ci-dessus. [0032] Un programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. [0033] L'invention vise aussi un support d'informations lisible par un processeur de 7 données, et comportant des instructions d'un programme tel que mentionné ci-dessus. [0034] Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple un support mobile (carte mémoire) ou un disque dur ou un SSD. [0035] D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. [0036] Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. [0037] Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels. [0038] Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, passerelle, set-top-box, routeur, etc.) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc. ). [0039] De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. [0040] Chaque composante du système précédemment décrit met bien entendu en oeuvre ses propres modules logiciels. [0041] Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en oeuvre de l'invention. 4. Présentation des dessins [0042] D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la 8 lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustrant' et non limitatif, et des dessins annexés, parmi lesquels : Ifig 11 décrit un processeur dans lequel l'invention est mise en oeuvre ; Ifig 21 illustre le découpage de la fonction d'activation d'un neurone confieurable selon l'invention ; Ifig 31 décrit l'enchaînement des blocs dans un mode de réalisation particuliers, pour le calcul d'une valeur approchante de la fonction d'activation ; [fig 4] décrit un mode de réalisation d'un procédé de traitement de données au sein d'un réseau de neurones selon l'invention. 5. Description détaillée [0043] 5.1. Exposé du principe technique [0044] 5.1.1. Généralités [0045] Confrontés à la problématique de mise en oeuvre d'un réseau de neurones adaptable et configurablc, les inventeurs se sont penchés sur la matérialisation des calculs à mettre en oeuvre dans différentes configurations. Comme explicité précédemment, il s'avère que les réseaux de neurones se différencient entre eux principalement par les calculs effectués. Plus particulièrement, les couches qui composent un réseau de neurones mettent en oeuvre des neurones unitaires qui réalisent à la fois des fonctions de combinaison et des fonctions d'activation qui peuvent être différentes d'un réseau à l'autre. Or, sur un dispositif électronique donné, tel qu'un smartphone, une tablette ou un ordinateur personnel, de nombreux réseaux de neurones différents peuvent être mis en oeuvre, chacun de ces réseaux de neurones étant utilisé par des applications ou des processus différents. Dès lors, dans un souci d'implémentation matérielle efficace de tels réseaux de neurones, il n'est pas envisageable de disposer d'un composant matériel dédié par type de réseau de neurones à mettre en oeuvre. C'est pour cette raison que majoritairement, les réseaux de neurones actuels sont mis en oeuvre de manière purement logicielle et non matériellement (c'est-à-dire en utilisant directement des instructions de processeurs). Partant de ce constat, comme exposé précédemment, les inventeurs ont développé et mis au point un neurone spécifique qui peut être matériellement reconfigurable. Grâce à un mot de commande, un tel neurone peut prendre la forme qui convient dans un réseau de neurones en cours d'exécution. Plus particulièrement, dans au moins un mode de réalisation, l'invention se matérialise sous la forme d'un processeur générique. Les calculs effectués par ce processeur générique peuvent, en fonction de modes de réalisation, être réalisés en virgule fixe ou en virgule flottante. Lorsqu'ils sont réalisés en virgules fixe, les calculs peuvent avantageusement être mis en oeuvre sur des platefonnes disposant de peu de ressources de calcul et de traitement, tels que de petits dispositifs de type objets connectés. Le processeur fonctionne avec un apprentissage hors-ligne. II comprend une mémoire comprenant 9 notamment : les poids synaptiques des différentes couches ; le choix de la fonction d'activation de chaque couche ; ainsi que des paramètres de configuration et d'exécution des neurones de chaque couche. Le nombre de neurones et de couches cachées dépend de la mise en oeuvre opérationnelle et de considérations économiques et pratiques. Plus particulièrement, la mémoire du processeur est dimensionnée en fonction de la capacité maximale que l'on souhaite offrir au réseau de neurones. Une structure de mémorisation des résultats d'une couche, également présente au sein du processeur, permet de réutiliser les mêmes neurones pour plusieurs couches cachées consécutives. Cette structure de mémorisation est, dans un objectif de simplification, appelée mémoire de stockage temporaire. Ainsi, le nombre de neurones reconfigurable du composant (processeur) est lui aussi sélectionné en fonction du nombre maximal de neurones que l'on souhaite autoriser pour une couche donnée du réseau de neurones. [0046] [fig.1] La figure] illustre succinctement le principe général de l'invention. Un processeur, comprend une pluralité de neurones configurable (seize neurones sont représentés sur la figure). Chaque neurone est composé de deux unités distinctes : une unité de calcul de la fonction de combinaison et une unité de calcul de la fonction d'activation (AFU). Chacune de ces deux unités est configurable par un mot de commande (cmd). Les neurones sont adressés par des bus de connexion (CBUS) et des routages de connexion (CROUT). Les données d'entrée sont représentées sous la forme d'un vecteur ( ) qui contient un certain nombre de valeurs d'entrées (huit valeurs dans l'exemple). Les valeurs sont routées dans le réseau pour produire huit scalaires résultats (z0,..., z7). Les poids synaptiques, les commandes et le paramètre d'ajustement X sont décrits par la suite. Ainsi, l'invention se rapporte à un processeur de traitement de données, ledit processeur comprenant au moins une mémoire de traitement (MEM) et une unité de calcul ECU), le dit processeur étant caractérisé en ce que l'unité de calcul (CU) comprend un ensemble d'unités de calculs configurables appelées neurones configurables, chaque neurone configurable (NC) de l'ensemble de neurones configurables (ENC) comprenant un module de calcul de fonctions de combinaison (MCFC) et un module de calcul de fonctions d'activation (MCFA), chaque module de calcul de fonctions d'activation (AFU) comprenant un registre de réception d'une commande de paramétrage, de sorte que ladite commande détermine une fonction d'activation à exécuter parmi au moins deux fonctions d'activation exécutables par le module de calcul de fonctions d'activation (AFU). Le processeur comprend également une mémoire de stockage de configuration du réseau (MEMR) au sein de laquelle des paramètres (PS, cmd, X) d'exécution de réseau de neurones sont enregistrés. Cette mémoire peut être la même que la mémoire de traitement (MEM). [0047] On expose par la suite différentes caractéristiques du processeur objet de l'invention et plus particulièrement la structure et les fonctions d'un neurone reconfigurable. [0048] 5.1.2. Neurone configurable [0049] Un neurone configurable du réseau de neurones configurables objet de l'invention comprend deux modules (unités) de calcul qui sont paramétrables : un en charge du calcul de la fonction de combinaison et un en charge du calcul de la fonction d'activation. Cependant, selon l'invention, afin de rendre l'implémentation du réseau efficace et performante, les inventeurs ont en quelque sorte simplifié et factorisé (mutualisé) les calculs, de sorte qu'un maximum de calculs en commun puisse être effectué par ces modules. Plus particulièrement, le module de calcul de la fonction d'activation (également appelé AFU) optimise les calculs communs à l'ensemble des fonctions d'activation, en simplifiant et en approximant ces calculs. Une mise en oeuvre illustrative est détaillée par la suite. De façon imagée, le module de calcul de la fonction d'activation effectue des calculs de sorte à reproduire un résultat proche de celui de la fonction d'activation choisie, en mettant en commun les parties de calcul qui servent à reproduire une approximation de la fonction d'activation. [0050] Le neurone artificiel, dans cc mode de réalisation, est décomposé en deux éléments (modules) paramétrables. Le premier élément (module) paramétrable calcule soit le produit scalaire (la plupart des réseaux) ou la distance euclidienne. Le deuxième élément (module) appelé UFA (pour Unité de Fonction d'Activation, AFU en anglais) implémente les fonctions d'activations. Le premier module implémente une approximation du calcul de la racine carrée pour le calcul de la distance euclidienne. Avantageusement, cette approximation est réalisée en virgule fixe, dans le cas de processeurs comprenant de faibles capacités. L'UFA permet d'utiliser la sigmoïde, la tangente hyperbolique, la gaussienne, la RELU. Comme explicité précédemment, le choix des calculs qui sont effectués par le neurone est réalisé par l'utilisation d'un mot de commande nommé cind comme cela est le cas d'une instruction d'un microprocesseur. Ainsi, ce circuit de neurone artificiel est paramétré par la réception d'un mot ou de plusieurs mots de commandes, en fonction de mode de réalisation. Un mot de commande est dans le cas présent un signal, comprenant un bit ou une suite de bits (par exemple un octet, permettant de disposer de 256 commandes possibles ou de deux fois 128 commandes) qui est transmis au circuit pour le paramétrer. Dans un mode de réalisation général, l'implémentation proposée d'un neurone permet de réaliser les réseaux « communs » tout comme les réseaux de neurones de dernière génération comme les ConvNet (réseau de neurones convolutifs). Cette architecture de calcul peut s'implémenter, de manière pratique, sous forme de librairie logicielle pour des processeurs standards ou bien sous forme d'implémentation matérielle pour des FPGA ou des ASICs. [0051] Ainsi, un neurone configurable est composé d'un module de calcul de distance et/ou de produit scalaire qui dépend du type de neurone utilisé, et d'un module UFA. 11 [0052] Un neurone générique configurable, comme tout neurone, comprend des données d'entrées en virgule fixe ou flottante dont : X constitue le vecteur de données d'entrée ; W constitue le vecteur des poids synaptiques du neurone ; [0053] et une donnée de sortie en virgule fixe ou flottante : z le résultat scalaire en sortie du neurone. [0054] Selon l'invention, en sus on dispose d'un paramètre, 2,., qui représente le paramètre de la sigmoïde, de la tangente hyperbolique, de la gaussienne ou bien de la RELU. Ce paramètre est identique pour tous les neurones d'une couche. Ce paramètre "A. est fourni au neurone avec le mot de commande, paratnétrant la mise en oeuvre du neurone. Ce paramètre peut être qualifié de paramètre d'approximation en ce sens qu'il est utilisé pour effectuer un calcul approchant de la valeur de la fonction à partir de l'une des méthodes d'approximation présentée ci-dessous. [0055] Plus particulièrement, dans un mode de réalisation général, les quatre fonctions principales reproduites (et factorisées) par l'UFA sont : la sigmoïde : [0056] [Math 2] sig (x ) _ 1 ^ _, x 1 + e - la tangente hyperbolique : 100571 tanh(Ox) - la fonction eaussienne ; 100581 / -.) f (x) = exp -x.2a-)., 7 la fonction RELU ( ... 0 ax x 0 [0068] avec (x) qui est la partie entière de x [0069] Deuxième méthode : [0070] La fonction tan h (x ) est estimée de la façon suivante : [0071] tanh(x) -2x Sig ( 2 x)- 1 [0072] avec [0073] 1 Sig (x) - 1+ exp (-x) [0074] Ou plus généralement : [0075] tanh (13x) = 2 x S i g ( 2f3x) -1 [0076] avec [0077] S 4] (À X ) - 1 + exp ( À x) [0078] Avec 1 Math.111 À = 218 100791 Troisième méthode : 100801 Pour approcher la gaussienne : [00811 f (x) ,-: exp (-X2 2a2, - ) [0082] On met c oeuvre la méthode suivante : [0083] sigr (x) - À sig (x) (1- sig (x)) [0084] Avec [0085] 1 / [0086] Quatrième méthode : [0087] Il n'est pas nécessaire de passer par une approximation pour obtenir une valeur de la fonction la fonction RELU (« Rectified linear Unit ») ; [0088] max(0,x) ou bienX X ..>.... 0 avec À = a { ax x