DE102020205130A1 - Apparatus and method for operating a trained neural network - Google Patents

Apparatus and method for operating a trained neural network Download PDF

Info

Publication number
DE102020205130A1
DE102020205130A1 DE102020205130.5A DE102020205130A DE102020205130A1 DE 102020205130 A1 DE102020205130 A1 DE 102020205130A1 DE 102020205130 A DE102020205130 A DE 102020205130A DE 102020205130 A1 DE102020205130 A1 DE 102020205130A1
Authority
DE
Germany
Prior art keywords
value
bits
neuron
quantizing
intermediate value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020205130.5A
Other languages
German (de)
Inventor
Timo Giesselmann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102020205130.5A priority Critical patent/DE102020205130A1/en
Publication of DE102020205130A1 publication Critical patent/DE102020205130A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning

Abstract

Eine Vorrichtung und ein Verfahren zum Betreiben eines trainierten neuronalen Netzwerks, das eine Vielzahl von quantisierenden Neuronen aufweist, werden offenbart, wobei das Verfahren aufweist: Zuführen von mehreren Neuronen-Eingangssignalwerten (308A) zu einem jeweiligen Neuron (300) des trainierten neuronalen Netzwerks (202), und gewichtetes Kombinieren und Quantisieren der Neuron-Eingangssignalwerte (308A) unter Hinzufügen eines Zufallswerts (404, 410) zu einem jeweiligen Neuron-Ausgangssignalwert (308B).An apparatus and a method for operating a trained neural network having a plurality of quantizing neurons are disclosed, the method comprising: supplying a plurality of neuron input signal values (308A) to a respective neuron (300) of the trained neural network (202 ), and weighted combining and quantizing the neuron input signal values (308A) while adding a random value (404, 410) to a respective neuron output signal value (308B).

Description

Verschiedene Ausführungsbeispiele betreffen allgemein eine Vorrichtung und ein Verfahren zum Betreiben eines trainierten neuronalen Netzwerks.Various exemplary embodiments generally relate to an apparatus and a method for operating a trained neural network.

Trainierte neuronale Netzwerke werden in verschiedenen computergesteuerten Vorrichtungen, wie beispielsweise Robotern, Haushaltsgeräten, Produktionsanlagen, Zugangskontrollsystemen, Fahrzeugen (zum Beispiel autonomen Fahrzeugen), persönlichen Assistenten, etc., verwendet. Zur Verringerung von Ressourcenanforderungen (zum Beispiel Speicherbedarf, zum Beispiel Rechenaufwand) können hierbei beispielsweise Ausgangswerte von Neuronen des trainierten neuronalen Netzwerkes quantisiert werden. Allerdings kann das Quantisieren zu einer verringerten Genauigkeit der Ausgabedaten des trainierten neuronalen Netzwerkes führen. Daher kann es beispielsweise erforderlich sein, die Ressourcenanforderungen zu verringern und gleichzeitig eine hohe Genauigkeit zu gewährleisten.Trained neural networks are used in various computer-controlled devices such as robots, household appliances, production facilities, access control systems, vehicles (e.g. autonomous vehicles), personal assistants, etc. In order to reduce resource requirements (for example memory requirements, for example computing effort), output values of neurons in the trained neural network can be quantized. However, the quantization can lead to a reduced accuracy of the output data of the trained neural network. Therefore, it may be necessary, for example, to reduce resource requirements while ensuring high accuracy.

Das Verfahren und die Vorrichtung mit den Merkmalen der unabhängigen Ansprüche 1 (erstes Beispiel) und 12 (zwölftes Beispiel) ermöglichen, ein trainiertes neuronales Netzwerk derart zu betreiben, dass die Ressourcenanforderungen verringert werden und eine hohe Genauigkeit des Netzwerks bereitgestellt wird.The method and the device with the features of independent claims 1 (first example) and 12 (twelfth example) make it possible to operate a trained neural network in such a way that the resource requirements are reduced and a high level of accuracy of the network is provided.

Ein neuronales Netzwerk kann jede Art von neuronalem Netzwerk, wie beispielsweise ein Autoencoder-Netzwerk, ein neuronales Faltungsnetzwerk (engl.: convolutional neural network, CNN), ein Variations-Autoencoder-Netzwerk (engl.: variational autoencoder network, VAE), ein Ausgedünntes Autoencoder-Netzwerk (engl.: sparse autoencoder network, SAE), ein rekurrentes neuroanales Netzwerk (RNN), ein neuronales Entfaltungsnetzwerk (engl.: deconvolutional neural network, DNN), ein generatives gegnerisches Netzwerk (engl. generative adversarial network, GAN), ein vorausschauendes neuronales Netzwerk (engl.: forward-thinking neural network), ein neuronales Summenprodukt-Netzwerk (engl.: sum-product neural network) etc., aufweisen oder sein. Das neuronale Netzwerk kann jede Anzahl an Schichten aufweisen und das trainierte neuronale Netzwerk kann mittels jeder Art von Trainingsprinzip trainiert worden sein, wie beispielsweise Backpropagation.A neural network can be any type of neural network, such as an autoencoder network, a convolutional neural network (CNN), a variational autoencoder network (VAE), a thinned one Autoencoder network (English: sparse autoencoder network, SAE), a recurrent neural anal network (RNN), a neural unfolding network (English: deconvolutional neural network, DNN), a generative adversarial network (GAN), have or be a forward-thinking neural network, a sum-product neural network, etc. The neural network can have any number of layers and the trained neural network can have been trained using any type of training principle, such as backpropagation, for example.

Das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen des Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert kann aufweisen: ein Ermitteln eines ergänzten Zwischenwerts eines jeweiligen Neurons durch gewichtetes Kombinieren der Neuron-Eingangssignalwerte und Hinzufügen des Zufallswerts, und ein Ermitteln des Neuron-Ausgangssignalwerts des Neurons mittels Quantisieren des ergänzten Zwischenwerts. Die in diesem Absatz beschriebenen Merkmale in Kombination mit dem ersten Beispiel bilden ein zweites Beispiel.The weighted combining and quantizing of the neuron input signal values while adding the random value to a respective neuron output signal value can include: determining a supplemented intermediate value of a respective neuron by weighted combining the neuron input signal values and adding the random value, and determining the neuron output signal value of the Neurons by quantizing the supplemented intermediate value. The features described in this paragraph in combination with the first example form a second example.

Ein neuronales Netzwerk weist eine endliche Präzision auf und ein Runden und/oder Quantisieren von Werten kann zu zusätzlichen Ungenauigkeiten führen. Das Hinzufügen des Zufallswerts kann vorteilhaft sein, da aufgrund des Hinzufügens einer zusätzlichen Entropie in Form des Zufallswerts Ungenauigkeiten verringert werden können. Dies hat den Effekt, dass mittels Quantisierens einerseits der Speicherbedarf für interne Berechnungen und/oder der Rechenaufwand verringert werden und andererseits ein damit einhergehender Genauigkeitsverlust teilweise (zum Beispiel vollständig) ausgeglichen werden kann.A neural network has a finite precision and rounding and / or quantizing values can lead to additional inaccuracies. The addition of the random value can be advantageous since, due to the addition of an additional entropy in the form of the random value, inaccuracies can be reduced. This has the effect that by means of quantization, on the one hand, the memory requirement for internal calculations and / or the computational effort can be reduced and, on the other hand, an accompanying loss of accuracy can be partially (for example completely) compensated.

Der ergänzte Zwischenwert kann mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweisen. Jedes Bit der mehreren Bits des ergänzten Zwischenwerts kann in Abhängigkeit der zugeordneten Bitwertigkeiten einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet sein. Das Ermitteln eines Neuron-Ausgangssignalwerts eines Neurons mittels Quantisieren des ergänzten Zwischenwerts kann ein Ermitteln des Neuron-Ausgangssignalwerts unter Verwendung der Bits der ersten Gruppe von Bits des ergänzten Zwischenwerts aufweisen. Die in diesem Absatz beschriebenen Merkmale in Kombination mit dem zweiten Beispiel bilden ein drittes Beispiel.The supplemented intermediate value can have several bits with a respective assigned bit value. Each bit of the plurality of bits of the supplemented intermediate value can be assigned to a first group of bits or a second group of bits as a function of the assigned bit values. Determining a neuron output signal value of a neuron by quantizing the supplemented intermediate value can include determining the neuron output signal value using the bits of the first group of bits of the supplemented intermediate value. The features described in this paragraph in combination with the second example form a third example.

Der Neuron-Ausgangssignalwert kann den Bits der ersten Gruppe von Bits entsprechen. Das in diesem Absatz beschriebene Merkmal in Kombination mit dem dritten Beispiel bildet ein viertes Beispiel.The neuron output signal value may correspond to the bits of the first group of bits. The feature described in this paragraph in combination with the third example forms a fourth example.

Das Ermitteln eines Neuron-Ausgangssignalwerts eines Neurons mittels Quantisieren des ergänzten Zwischenwerts kann ferner aufweisen: ein Erzeugen eines zweiten Zufallswerts mittels eines Zufallszahlengenerators, und ein Ermitteln des Neuron-Ausgangssignalwerts des Neurons durch Hinzufügen des zweiten Zufallswerts zu dem quantisierten ergänzten Zwischenwert. Die in diesem Abschnitt beschriebenen Merkmale in Kombination mit einem oder mehreren des zweiten Beispiels bis dem vierten Beispiel bilden ein fünftes Beispiel.Determining a neuron output signal value of a neuron by quantizing the supplemented intermediate value can further include: generating a second random value by means of a random number generator, and determining the neuron output signal value of the neuron by adding the second random value to the quantized supplemented intermediate value. The features described in this section in combination with one or more of the second example to the fourth example form a fifth example.

Das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen des Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert kann aufweisen: ein Ermitteln eines Zwischenwerts eines jeweiligen Neurons durch gewichtetes Kombinieren der zugeordneten Neuron-Eingangssignalwerte, ein Quantisieren des Zwischenwerts, ein Erzeugen des Zufallswerts mittels des Zufallszahlengenerators, und ein Ermitteln des Neuron-Ausgangssignalwerts des Neurons durch Hinzufügen des Zufallswerts zu dem quantisierten Zwischenwert. Die in diesem Abschnitt beschriebenen Merkmale in Kombination mit dem ersten Beispiel bilden ein sechstes Beispiel.The weighted combining and quantizing of the neuron input signal values while adding the random value to a respective neuron output signal value can include: determining an intermediate value of a respective neuron by weighted combining of the assigned neuron input signal values, quantizing the intermediate value, generating the random value by means of the random number generator, and determining the neuron output signal value of the neuron by adding the random value to the quantized intermediate value. The features described in this section in combination with the first example form a sixth example.

Der Zwischenwert kann mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweisen Jedes Bit der mehreren Bits des Zwischenwerts kann in Abhängigkeit der zugeordneten Bitwertigkeiten einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet sein. Das Quantisieren des Zwischenwerts kann ein Ermitteln eines quantisierten Zwischenwerts unter Verwendung der Bits der ersten Gruppe von Bits des Zwischenwerts aufweisen. Die in diesem Abschnitt beschriebenen Merkmale in Kombination mit dem sechsten Beispiel bilden ein siebtes Beispiel.The intermediate value can have a plurality of bits with a respective assigned bit significance. Each bit of the plurality of bits of the intermediate value can be assigned to a first group of bits or to a second group of bits as a function of the assigned bit values. The quantizing of the intermediate value can comprise determining a quantized intermediate value using the bits of the first group of bits of the intermediate value. The features described in this section in combination with the sixth example form a seventh example.

Der quantisierte Zwischenwert kann den Bits der ersten Gruppe von Bits des Zwischenwerts entsprechen. Das in diesem Abschnitt beschriebene Merkmal in Kombination mit dem siebten Beispiel bildet ein achtes Beispiel.The quantized intermediate value can correspond to the bits of the first group of bits of the intermediate value. The feature described in this section in combination with the seventh example forms an eighth example.

Das Verfahren kann das Durchführen von mehreren Iterationen des Zuführens von mehreren Neuron-Eingangssignalwerten zu einem jeweiligen Neuron des trainierten neuronalen Netzwerkes und des Gewichteten Kombinierens und Quantisierens der Neuron-Eingangssignalwerte unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert aufweisen. Das Erzeugen des Zufallswerts mittels eines Zufallszahlengenerators kann in einer jeden Iteration aufweisen: ein Ermitteln eines Akkumulationswerts des Neurons durch Addieren der Bits der zweiten Gruppe von Bits zu einem Akkumulationswert einer vorherigen Iteration, und ein Ermitteln des Zufallswerts unter Verwendung des Akkumulationswerts. Die in diesem Abschnitt beschriebenen Merkmale in Kombination mit einem oder mehreren des sechsten Beispiels bis dem achten Beispiel bilden ein neuntes Beispiel.The method can include performing multiple iterations of supplying multiple neuron input signal values to a respective neuron of the trained neural network and weighted combining and quantizing the neuron input signal values while adding a random value to a respective neuron output signal value. Generating the random value by means of a random number generator can comprise in each iteration: determining an accumulation value of the neuron by adding the bits of the second group of bits to an accumulation value of a previous iteration, and determining the random value using the accumulation value. The features described in this section in combination with one or more of the sixth example through the eighth example form a ninth example.

Dies kann vorteilhaft sein, da kleinere Hardware (zum Beispiel damit kostengünstigere Hardware, zum Beispiel Hardware mit geringerer rechentechnischen Leistung) für das implementieren des trainierten neuronalen Netzwerks verwendet werden kann.This can be advantageous since smaller hardware (for example hardware that is more cost-effective as a result, for example hardware with lower computational power) can be used for implementing the trained neural network.

Der Zufallswert kann einem Überlaufbit des Akkumulationswerts entsprechen. Das in diesem Abschnitt beschriebene Merkmal in Kombination mit dem neunten Beispiel bildet ein zehntes Beispiel.The random value can correspond to an overflow bit of the accumulation value. The feature described in this section in combination with the ninth example forms a tenth example.

Der Akkumulationswert kann mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweisen. Jedes Bit der mehreren Bits des Akkumulationswertes kann in Abhängigkeit der jeweils zugeordneten Bitwertigkeit einer ersten Untergruppe von Bits oder einer zweiten Untergruppe von Bits zugeordnet sein. Die Anzahl an Bits der zweiten Untergruppe von Bits des Akkumulationswerts kann der Anzahl an Bits der zweiten Gruppe von Bits des Zwischenwerts entsprechen. Der Zufallswert kann den Bits der ersten Untergruppe von Bits des Akkumulationswerts entsprechen. Die in diesem Abschnitt beschriebenen Merkmale in Kombination dem zehnten Beispiel bilden ein elftes Beispiel.The accumulation value can have a plurality of bits with a respective assigned bit significance. Each bit of the plurality of bits of the accumulation value can be assigned to a first subgroup of bits or a second subgroup of bits as a function of the respectively assigned bit significance. The number of bits of the second subgroup of bits of the accumulation value can correspond to the number of bits of the second group of bits of the intermediate value. The random value can correspond to the bits of the first subgroup of bits of the accumulation value. The features described in this section in combination with the tenth example form an eleventh example.

Ein Computerprogrammprodukt kann Programminstruktionen speichern, welche, wenn sie ausgeführt werden, das Verfahren nach einem oder mehreren des ersten Beispiels bis dem elften Beispiel ausführen. Das Computerprogrammprodukt mit den in diesem Absatz beschriebenen Merkmalen bildet ein dreizehntes Beispiel.A computer program product can store program instructions which, when executed, execute the method according to one or more of the first example to the eleventh example. The computer program product with the features described in this paragraph forms a thirteenth example.

Ein nichtflüchtiges Speichermedium kann Programminstruktionen speichern, welche, wenn sie ausgeführt werden, das Verfahren einem oder mehreren des ersten Beispiels bis dem elften Beispiel ausführen. Das nichtflüchtige Speichermedium mit den in diesem Absatz beschriebenen Merkmalen bildet ein vierzehntes Beispiel.A non-volatile storage medium can store program instructions which, when executed, carry out the method of one or more of the first example to the eleventh example. The non-volatile storage medium with the features described in this paragraph constitutes a fourteenth example.

Ein nichtvolatiles Speichermedium kann Programminstruktionen speichern, welche, wenn sie ausgeführt werden, das Verfahren einem oder mehreren des ersten Beispiels bis dem elften Beispiel ausführen. Das nichtvolatile Speichermedium mit den in diesem Absatz beschriebenen Merkmalen bildet ein fünfzehntes Beispiel.A non-volatile storage medium can store program instructions which, when executed, carry out the method of one or more of the first example to the eleventh example. The non-volatile storage medium with the features described in this paragraph forms a fifteenth example.

Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und in der nachfolgenden Beschreibung näher erläutert.Embodiments of the invention are shown in the drawing and explained in more detail in the description below.

Es zeigen

  • 1 eine Vorrichtung gemäß verschiedenen Ausführungsformen;
  • 2 ein Verarbeitungssystem gemäß verschiedenen Ausführungsformen;
  • 3 einen Ausschnitt eines beispielhaften trainierten neuronalen Netzwerkes gemäß verschiedenen Ausführungsformen;
  • 4A bis 4D eine Verarbeitung mittels eines jeweiligen Neurons gemäß verschiedenen Ausführungsformen;
  • 5A eine anschauliche Darstellung mehrerer Bits mit einer zugeordneten Bitwertigkeit gemäß verschiedenen Ausführungsformen;
  • 5B eine anschauliche Darstellung eines Quantisierens eines mehrere Bits aufweisenden Wertes gemäß verschiedenen Ausführungsformen;
  • 5C eine anschauliche Darstellung eines Ermittelns eines Zufallswertes gemäß verschiedenen Ausführungsformen;
  • 6 ein Verfahren zum Betreiben eines trainierten neuronalen Netzwerks gemäß verschiedenen Ausführungsformen;
  • 7 ein System mit einem trainierten neuronalen Netzwerk gemäß verschiedenen Ausführungsformen.
Show it
  • 1 an apparatus according to various embodiments;
  • 2 a processing system according to various embodiments;
  • 3 a section of an exemplary trained neural network according to various embodiments;
  • 4A until 4D processing by means of a respective neuron according to various embodiments;
  • 5A an illustrative representation of a plurality of bits with an assigned bit weight according to various embodiments;
  • 5B an illustrative representation of a quantizing of a multi-bit having Value according to various embodiments;
  • 5C an illustrative representation of a determination of a random value according to various embodiments;
  • 6th a method for operating a trained neural network in accordance with various embodiments;
  • 7th a system with a trained neural network according to various embodiments.

In einer Ausführungsform kann eine „Schaltung“ als jede Art von Logikimplementierender Entität verstanden werden, welche Hardware, Software, Firmware oder eine Kombination davon sein kann. Daher kann in einer Ausführungsform eine „Schaltung“ eine hartverdrahtete Logikschaltung oder eine programmierbare Logikschaltung, wie beispielsweise ein programmierbarer Prozessor, zum Beispiel ein Mikroprozessor (z.B. ein CISC (Prozessor mit großem Befehlsvorrat) oder ein RISC (Prozessor mit reduziertem Befehlsvorrat)), sein. Eine „Schaltung“ kann auch Software sein, die von einem Prozessor implementiert bzw. ausgeführt wird, zum Beispiel jede Art von Computerprogramm, zum Beispiel ein Computerprogramm das einen virtuellen Maschinencode, wie beispielsweise Java, verwendet. Jede andere Art der Implementierung der jeweiligen Funktionen, die im Folgenden ausführlicher beschrieben werden, kann in Übereinstimmung mit einer alternativen Ausführungsform als eine „Schaltung“ verstanden werden.In one embodiment, a “circuit” can be understood as any type of logic implementing entity, which can be hardware, software, firmware, or a combination thereof. Therefore, in one embodiment, a "circuit" may be a hardwired logic circuit or a programmable logic circuit such as a programmable processor, such as a microprocessor (e.g., a CISC (large instruction set processor) or a RISC (reduced instruction set processor)). A “circuit” can also be software that is implemented or executed by a processor, for example any type of computer program, for example a computer program that uses virtual machine code such as Java. Any other type of implementation of the respective functions, which are described in more detail below, may be understood as a “circuit” in accordance with an alternative embodiment.

Bei der Verarbeitung von Daten mittels eines neuronalen Netzwerks kann durch eine Rundung (zum Beispiel Quantisierung) von Werten der Speicherbedarf für interne Berechnungen des neuronalen Netzwerkes verringert werden. Allerdings kann dies zu Ungenauigkeiten bezüglich der Ausgabe des neuronalen Netzwerkes führen. Daher kann es vorteilhaft sein, einerseits den Speicherbedarf für interne Berechnungen zu verringern und andererseits eine hohe Genauigkeit der durch das neuronale Netzwerk ausgegebenen Daten breitzustellen. Verschiedene Ausführungsbeispiele betreffen eine Vorrichtung und ein Verfahren zum Betreiben eines trainierten neuronalen Netzwerkes derart, dass das trainierte neuronale Netzwerk einen verringerten Speicherbedarf für interne Berechnungen benötigt sowie eine hohe Genauigkeit bezüglich der ausgegebenen Daten aufweist.When processing data by means of a neural network, the storage requirements for internal calculations of the neural network can be reduced by rounding (for example, quantizing) values. However, this can lead to inaccuracies with regard to the output of the neural network. It can therefore be advantageous, on the one hand, to reduce the memory requirement for internal calculations and, on the other hand, to provide a high level of accuracy for the data output by the neural network. Various exemplary embodiments relate to a device and a method for operating a trained neural network in such a way that the trained neural network requires a reduced memory requirement for internal calculations and has a high level of accuracy with regard to the output data.

1 stellt eine Vorrichtung 100 gemäß verschiedenen Ausführungsformen dar. Die Vorrichtung 100 kann einen oder mehrere Sensoren 102 aufweisen. Die ein oder mehreren Sensoren 102 können eingerichtet sein, um Daten 104 (zum Beispiel digitale Daten) bereitzustellen. Ein Sensor 102 kann jede Art von Sensor sein, der imstande ist, Daten zu detektieren. Ein Sensor 102 kann zum Beispiel ein Bildgebungssensor, wie beispielsweise ein Kamera-Sensor oder ein Video-Sensor, ein Fernortungssensor, wie beispielsweise ein Radar-Sensor, ein LIDAR-Sensor oder ein Ultraschall-Sensor, oder ein thermischer Sensor, ein Geschwindigkeitssensor, ein Beschleunigungssensor, ein Winkelsensor, ein Magnetfeldsensor, ein Drehratensensor oder eine andere Art von Sensor sein. sein kann. Gemäß verschiedenen Ausführungsformen kann mindestens ein Sensor der ein oder mehreren Sensoren 102 eine MEMS-(Mikro-Elektro-Mechanisches-System)-Technologie aufweisen. Ein Sensor 102 kann ein Sensor eines Fahrzeuges zum Detektieren einer Gaspedalstellung, einer Einspritzmenge, einer Temperatur, einer Drehzahl, etc. sein. Ein Sensor 102 kann ein Bewegungssensor und/oder ein Lagesensor zur Detektion von Bewegungsprofilen und/oder Gesten sein, wie beispielsweise ein Bewegungssensor und/oder ein Lagesensor in einem Smartphone, einer Smartwatch und/oder einem Kopfhörer. Die Sensoren der mehreren Sensoren können die gleiche Art oder verschiedene Arten von Sensoren aufweisen. 1 represents a device 100 according to various embodiments. The device 100 can have one or more sensors 102 exhibit. The one or more sensors 102 can be set up to include data 104 (e.g. digital data). One sensor 102 can be any type of sensor capable of detecting data. One sensor 102 For example, an imaging sensor such as a camera sensor or a video sensor, a remote location sensor such as a radar sensor, a LIDAR sensor or an ultrasonic sensor, or a thermal sensor, a speed sensor, an acceleration sensor Be an angle sensor, a magnetic field sensor, a rotation rate sensor or another type of sensor. can be. According to various embodiments, at least one sensor of the one or more sensors 102 have a MEMS (micro-electro-mechanical system) technology. One sensor 102 can be a sensor of a vehicle for detecting an accelerator pedal position, an injection quantity, a temperature, a speed, etc. One sensor 102 can be a motion sensor and / or a position sensor for detecting motion profiles and / or gestures, such as a motion sensor and / or a position sensor in a smartphone, a smartwatch and / or headphones. The sensors of the plurality of sensors may be of the same type or different types of sensors.

Die Vorrichtung 100 kann ferner eine Speichervorrichtung 106 aufweisen. Die Speichervorrichtung 106 kann zumindest einen Speicher aufweisen. Der Speicher kann beispielsweise bei der durch einen Prozessor durchgeführten Verarbeitung verwendet werden. Ein in den Ausführungsformen verwendeter Speicher kann ein flüchtiger Speicher, zum Beispiel ein DRAM (dynamischer Direktzugriffsspeicher), oder ein nichtflüchtiger Speicher, zum Beispiel ein PROM (programmierbarer Festwertspeicher), ein EPROM (löschbarer PROM), ein EEPROM (elektrisch löschbarer PROM) oder ein Flash-Speicher, wie beispielsweise eine Speichereinrichtung mit schwebendem Gate, eine ladungsabfangende Speichereinrichtung, ein MRAM (magnetoresistiver Direktzugriffsspeicher) oder ein PCRAM (Phasenwechsel-Direktzugriffsspeicher), sein. Die Speichervorrichtung 106 kann eingerichtet sein, um die Daten 104 zu speichern. Die Vorrichtung 100 kann ferner mindestens einen Prozessor 108 aufweisen. Der Prozessor 108 kann, wie oben beschrieben, jede Art von Schaltung, d.h. jede Art von Logikimplementierender Entität, sein. In verschiedenen Ausführungsformen ist der Prozessor 108 eingerichtet, die Daten 104 zu verarbeiten.The device 100 can further include a storage device 106 exhibit. The storage device 106 can have at least one memory. The memory can be used in processing performed by a processor, for example. A memory used in the embodiments may be a volatile memory such as a DRAM (dynamic random access memory), or a non-volatile memory such as a PROM (programmable read-only memory), an EPROM (erasable PROM), an EEPROM (electrically erasable PROM), or a Flash memories such as a floating gate memory device, a charge trapping memory device, an MRAM (magnetoresistive random access memory) or a PCRAM (phase change random access memory). The storage device 106 can be set up to the data 104 save. The device 100 can also include at least one processor 108 exhibit. The processor 108 can, as described above, be any type of circuit, ie any type of logic implementing entity. In various embodiments, the processor is 108 set up the data 104 to process.

2 stellt ein Verarbeitungssystem 200 gemäß verschiedenen Ausführungsformen dar. Das Verarbeitungssystem 200 kann die Speichervorrichtung 106 zum Speichern der Daten 104 aufweisen. 2 provides a processing system 200 according to various embodiments. The processing system 200 can the storage device 106 to save the data 104 exhibit.

Das Verarbeitungssystem 200 kann den mindestens einen Prozessor 108 aufweisen. Der mindestens eine Prozessor 108 kann eingerichtet sein, um ein trainiertes neuronales Netzwerk 202 zu implementieren. Das trainierte neuronale Netzwerk 202 kann, wie oben beschrieben, jede Art von neuronalem Netzwerk sein und kann mittels jeder Art von Trainingsmethode trainiert worden sein. Gemäß verschiedenen Ausführungsformen kann das trainierte neuronale Netzwerk 202 ein Klassifikationsnetzwerk aufweisen oder sein. Beispielsweise kann das trainierte neuronale Netzwerk 202 eingerichtet sein, um ein oder mehrere Klassen von einer Vielzahl von Klassen für die Daten 104 zu ermitteln. Gemäß verschiedenen Ausführungsformen können die Daten 104 ein oder mehrere Bilder aufweisen, wobei jedes Bild eine Vielzahl von Bildpunkten aufweisen kann. Das trainierte neuronale Netzwerk 202 kann eingerichtet sein, um jedem Bildpunkt (oder einer Gruppe von Bildpunkten) der Vielzahl von Bildpunkten eines Bildes der ein oder mehreren Bilder eine Klasse von mehreren Klassen zuzuordnen. Beispielsweise kann das neuronale Netzwerk 202 ein Bild-Segmentierungsnetzwerk (zum Beispiel zur semantischen Segmentierung) aufweisen oder sein und jede Klasse der mehreren Klassen kann einem Objekt oder einer Kategorie zugeordnet sein. Beispielsweise kann das trainierte neuronale Netzwerk 202 ein Objekterkennungsnetzwerk aufweisen oder sein, und das trainierte neuronale Netzwerk 202 kann eingerichtet sein, um ein oder mehrere Objekte in einem Bild der mehreren Bilder zu erkennen (zum Beispiel zu detektieren). Beispielsweise kann das trainierte neuronale Netzwerk 202 eingerichtet sein, um zu ermitteln, ob in einem Bild der mehreren Bilder ein oder mehrere Objekte erkannt wurden oder nicht. Das trainierte neuronale Netzwerk 202 kann eingerichtet sein, um ein Objekt zu erkennen mittels Zuordnens einer Klasse von mehreren Klassen (zum Beispiel mindestens zwei Klassen) zu jedem Bildpunkt (oder Gruppe von Bildpunkten) der mehreren Bildpunkte eines Bildes der mehreren Bilder oder zu einem Bild der mehreren Bilder. Gemäß verschiedenen Ausführungsformen kann das trainierte neuronale Netzwerk 202 ein Bild-Segmentierungsnetzwerk und ein Objekterkennungsnetzwerk aufweisen oder sein. Beispielsweise können Bilder der mehreren Bilder von einem Bildgebungssensor, wie beispielsweise einem Kamera-Sensor und/oder einem Video-Sensor, und/oder von einem Fernortungssensor, wie beispielsweise einem Radar-Sensor, einem LIDAR-Sensor und/oder einem Ultraschall-Sensor, bereitgestellt werden oder unter Verwendung der von den Sensoren bereitgestellten Daten ermittelt werden. Gemäß verschiedenen Ausführungsformen können die Daten 104 eine andere Art von Datenformat aufweisen, wie beispielsweise eine Liste (zum Beispiel eine Liste von Zielen), eine Punktwolke und/oder ein Audio-Spektrogramm, etc., und das trainierte neuronale Netzwerk 202 kann eingerichtet sein, um die Daten 104 zu klassifizieren. Beispielsweise kann ein Datum der Daten 104 eine Punktwolke aufweisen und das trainierte neuronale Netzwerk 202 kann eingerichtet sein, um einem Punkt oder eine Gruppe von Punkten (zum Beispiel jedem Punkt bzw. jeder Gruppe von Punkten) eine Klasse von mehreren Klassen zuzuordnen.The processing system 200 can use the at least one processor 108 exhibit. The at least one processor 108 can be set up around a trained neural network 202 to to implement. The trained neural network 202 can be any type of neural network, as described above, and can have been trained using any type of training method. According to various embodiments, the trained neural network 202 have or be a classification network. For example, the trained neural network 202 be set up to have one or more classes from a variety of classes for the data 104 to investigate. According to various embodiments, the data 104 have one or more images, wherein each image can have a plurality of pixels. The trained neural network 202 can be set up to assign a class of a plurality of classes to each pixel (or a group of pixels) of the plurality of pixels of an image of the one or more images. For example, the neural network 202 have or be an image segmentation network (for example for semantic segmentation) and each class of the plurality of classes can be assigned to an object or a category. For example, the trained neural network 202 have or be an object recognition network, and the trained neural network 202 can be set up to recognize (for example to detect) one or more objects in an image of the plurality of images. For example, the trained neural network 202 be set up to determine whether or not one or more objects were recognized in an image of the plurality of images. The trained neural network 202 can be set up to recognize an object by assigning a class of a plurality of classes (for example at least two classes) to each pixel (or group of pixels) of the plurality of pixels of an image of the plurality of images or to an image of the plurality of images. According to various embodiments, the trained neural network 202 have or be an image segmentation network and an object recognition network. For example, images of the multiple images from an imaging sensor, such as a camera sensor and / or a video sensor, and / or from a remote location sensor, such as a radar sensor, a LIDAR sensor and / or an ultrasound sensor, are provided or are determined using the data provided by the sensors. According to various embodiments, the data 104 have another type of data format, such as a list (e.g. a list of targets), a point cloud and / or an audio spectrogram, etc., and the trained neural network 202 can be set up to the data 104 to classify. For example, the data can be a date 104 have a point cloud and the trained neural network 202 can be set up in order to assign a class of several classes to a point or a group of points (for example each point or each group of points).

Die Daten 104 können ein oder mehrere Eingabedatenvektoren, wie beispielsweise einen Eingabedatenvektor 204, aufweisen. Das trainierte neuronale Netzwerk 202 kann eingerichtet sein zum Verarbeiten des Eingabedatenvektors 204. Das trainierte neuronale Netzwerk 202 kann eingerichtet sein zum Bereitstellen (zum Beispiel Ermitteln) eines Ausgabedatenvektors für einen jeweiligen Eingabedatenvektor. Das trainierte neuronale Netzwerk 202 kann eingerichtet sein zum Bereitstellen (zum Beispiel Ermitteln) eines Ausgabedatenvektors 206 für den Eingabedatenvektor 204. Der Ausgabedatenvektor 206 kann jede Art von Information aufweisen oder sein.The data 104 can be one or more input data vectors, such as an input data vector 204 , exhibit. The trained neural network 202 can be arranged to process the input data vector 204 . The trained neural network 202 can be set up to provide (for example determine) an output data vector for a respective input data vector. The trained neural network 202 can be set up to provide (for example determine) an output data vector 206 for the input data vector 204 . The output data vector 206 can contain or be any type of information.

3 zeigt einen Ausschnitt 300 eines beispielhaften trainierten neuronalen Netzwerkes 202 gemäß verschiedenen Ausführungsformen. 3 shows a section 300 an exemplary trained neural network 202 according to various embodiments.

Das trainierte neuronale Netzwerk 202 kann eine Vielzahl von quantisierenden Neuronen 300 aufweisen. Das trainierte neuronale Netzwerk 202 kann mehrere Schichten 302, 304, 306 aufweisen, wobei jeder Schicht der mehreren Schichten 302, 304, 306 mehrere quantisierende Neuronen 300 der Vielzahl von quantisierenden Neuronen 300 zugeordnet sein können.The trained neural network 202 can use a variety of quantizing neurons 300 exhibit. The trained neural network 202 can have multiple layers 302 , 304 , 306 each layer of the plurality of layers 302 , 304 , 306 multiple quantizing neurons 300 the multitude of quantizing neurons 300 can be assigned.

Jedes quantisierende Neuron 300 der Vielzahl von quantisierenden Neuronen 300 kann einen Neuron-Ausgangssignalwert 308 bereitstellen (zum Beispiel ausgeben). Jedes quantisierende Neuron 300 der Vielzahl von quantisierenden Neuronen 300 kann mehrere Neuron-Eingangssignalwerte 308 verarbeiten. Jedes quantisierende Neuron 300 der Vielzahl von quantisierenden Neuronen 300 kann einen Neuron-Ausgangssignalwert 308 für mehrere Neuron-Eingangssignalwerte 308 ermitteln (zum Beispiel ausgeben). Zum Beispiel können die einer Schicht 300 oder 304 des trainierten neuronalen Netzwerkes 202 zugeordneten mehreren quantisierenden Neuronen 300 jeweils einen zugeordneten Neuron-Ausgangssignalwert 308 bereitstellen (zum Beispiel ermitteln) und ein quantisierendes Neuron 300 einer darauffolgenden Schicht 304 bzw. 306 des trainierten neuronalen Netzwerkes 202 kann die von den mehreren quantisierenden Neuronen 300 bereitgestellten Neuron-Ausgangssignalwerte 308 als Neuron-Eingangssignalwerte 308 verarbeiten. Beispielsweise können die Neuron-Ausgangssignalwerte 308 einer Schicht Neuron-Eingangssignalwerte 308 einer nächsten Schicht bilden.Every quantizing neuron 300 the multitude of quantizing neurons 300 can be a neuron output signal value 308 provide (for example output). Every quantizing neuron 300 the multitude of quantizing neurons 300 can have multiple neuron input signal values 308 to process. Every quantizing neuron 300 the multitude of quantizing neurons 300 can be a neuron output signal value 308 for multiple neuron input signal values 308 determine (for example output). For example, one layer can 300 or 304 of the trained neural network 202 associated with multiple quantizing neurons 300 each have an associated neuron output signal value 308 provide (for example determine) and a quantizing neuron 300 a subsequent layer 304 respectively. 306 of the trained neural network 202 can be that of the multiple quantizing neurons 300 provided neuron output signal values 308 as neuron input signal values 308 to process. For example, the neuron output signal values 308 a layer of neuron input signal values 308 form a next layer.

Ein quantisierendes Neuron 300 kann eingerichtet sein, um die mehreren Neuron-Eingangssignalwerte 308 gewichtet zu kombinieren. Jedem Neuron-Eingangssignalwerte 308 der mehrere Neuron-Eingangssignalwerte 308 kann ein Gewichtsfaktor 310 zugeordnet sein. Ein quantisierendes Neuron 300 kann die mehreren Neuron-Eingangssignalwerte 308 mittels der zugeordneten Gewichtsfaktoren 310 gewichtet kombinieren. Ein quantisierendes Neuron 300 kann ferner eingerichtet sein, um bei dem gewichteten Kombinieren der mehreren Neuron-Eingangssignalwerte 308 mittels der zugeordneten Gewichtsfaktoren 310 einen dem quantisierenden Neuron 300 zugeordneten Biaswert hinzuzufügen (zum Beispiel zu addieren). Anschaulich kann ein Neuron 300 jeden Neuron-Eingangssignalwert 308 mit einem jeweils zugeordneten Gewichtsfaktor 310 multiplizieren und die mehreren Produkte sowie den Biaswert 312 addieren. Das gewichtete Kombinieren der mehreren Neuron-Eingangssignalwerte 308 kann beispielsweise mittels Gleichung (1) beschrieben werden: o = b + i = 1 n x i w i

Figure DE102020205130A1_0001
wobei:
o ein mittels gewichtetem Kombinieren erhaltener Wert sein kann,
b ein Biaswert sein kann,
n die Anzahl an Neuron-Eingangssignalwerten 308 sein kann,
xi ein jeweiliger Neuron-Eingangssignalwert 308 der mehreren Neuron-Eingangssignalwerte 308 sein kann, und
wi ein dem jeweiligen Neuron-Eingangssignalwert 308 zugeordneter Gewichtsfaktor 310 sein kann.A quantizing neuron 300 can be configured to include the multiple neuron input signal values 308 weighted to combine. Each neuron input signal values 308 the multiple neuron input signal values 308 can a Weight factor 310 be assigned. A quantizing neuron 300 can use the multiple neuron input signal values 308 by means of the assigned weight factors 310 combine weighted. A quantizing neuron 300 can further be set up, in the weighted combining of the plurality of neuron input signal values 308 by means of the assigned weight factors 310 one of the quantizing neuron 300 assigned bias value (for example, to add). A neuron can vividly 300 any neuron input signal value 308 each with an assigned weight factor 310 multiply and the multiple products as well as the bias value 312 add. The weighted combining of the multiple neuron input signal values 308 can be described using equation (1), for example: O = b + i = 1 n x i w i
Figure DE102020205130A1_0001
whereby:
o can be a value obtained by means of weighted combining,
b can be a bias value,
n is the number of neuron input signal values 308 can be,
x i a respective neuron input signal value 308 of the multiple neuron input signal values 308 can be, and
w i on the respective neuron input signal value 308 assigned weight factor 310 can be.

Das gewichtete Kombinieren von mehreren Neuron-Eingangssignalwerten 308 wird bei neuronalen Netzwerken auch als MAC-Operation (engl.: Multiply-Accumulate Operation) bezeichnet. Gemäß verschiedenen Ausführungsformen kann die MAC-Operation als Fließkomma-Arithmetik oder als Festkomma-Arithmetik ausgeführt werden. Die Verwendung einer Festkomma-Arithmetik in Kombination mit einem Quantisieren von mittels MAC-Operation ermittelten Werten kann vorteilhaft sein bezüglich der Einsparung von Ressourcen (zum Beispiel einer Verringerung des Speicherbedarfs, zum Beispiel einer Verringerung des Rechenaufwands).The weighted combining of multiple neuron input signal values 308 is also referred to as a MAC (Multiply-Accumulate Operation) operation in neural networks. According to various embodiments, the MAC operation can be carried out as floating point arithmetic or as fixed point arithmetic. The use of fixed point arithmetic in combination with a quantization of values determined by means of the MAC operation can be advantageous in terms of saving resources (for example a reduction in the memory requirement, for example a reduction in the computational effort).

Das trainierte neuronale Netzwerk 202 kann mehrere Schichten 302, 304, 306 mit einer ersten Schicht, einer letzten Schicht und ein oder mehreren zwischen der ersten Schicht und der letzten Schicht angeordneten Schichten aufweisen. Beispielsweise können die mehreren quantisierenden Neuronen 300 der ersten Schicht des trainierten neuronalen Netzwerkes 202 eingerichtet sein zum Verarbeiten des Eingabedatenvektors 204 und die mehreren quantisierenden Neuronen 300 der letzten Schicht des trainierten neuronalen Netzwerkes 202 können eingerichtet sein zum Bereitstellen des Ausgabedatenvektors 206. Zum Beispiel kann der Ausgabedatenvektor 206 die von den mehreren quantisierenden Neuronen 300 der letzten Schicht des trainierten neuronalen Netzwerks 202 ermittelten mehreren Neuron-Ausgangssignalwerte 308 aufweisen oder sein.The trained neural network 202 can have multiple layers 302 , 304 , 306 having a first layer, a last layer and one or more layers arranged between the first layer and the last layer. For example, the multiple quantizing neurons 300 the first layer of the trained neural network 202 be arranged to process the input data vector 204 and the multiple quantizing neurons 300 the last layer of the trained neural network 202 can be set up to provide the output data vector 206 . For example, the output data vector can be 206 those of the multiple quantizing neurons 300 the last layer of the trained neural network 202 determined several neuron output signal values 308 have or be.

4A bis 4D zeigen jeweils eine Verarbeitung mittels eines jeweiligen Neurons 300, wie beispielsweise das Ermitteln eines jeweiligen Neuron-Ausgangssignalwerts 308 für mehrere Neuron-Eingangssignalwerte 308, gemäß verschiedenen Ausführungsformen. Beispielsweise kann ein jeweiliges Neuron mehrere Neuron-Eingangssignalwerte 308A verarbeiten und kann für die mehreren Neuron-Eingangssignalwerte 308A einen Neuron-Ausgangssignalwert 308B ermitteln. Beispielsweise kann das Neuron 300 einer Schicht den ermittelten Neuron-Ausgangssignalwert 308B an ein oder mehrere Neuronen einer nächsten Schicht als Neuron-Eingangssignalwert bereitstellen. 4A until 4D each show processing by means of a respective neuron 300 such as determining a respective neuron output signal value 308 for multiple neuron input signal values 308 , according to various embodiments. For example, a respective neuron can have several neuron input signal values 308A process and can for the multiple neuron input signal values 308A a neuron output value 308B determine. For example, the neuron 300 a layer the determined neuron output signal value 308B to one or more neurons of a next layer as a neuron input signal value.

4A zeigt eine Verarbeitung mittels eines jeweiligen quantisierenden Neurons 300 der Vielzahl von quantisierenden Neuronen 300 gemäß verschiedenen Ausführungsformen. Wie oben beschrieben, können einem jeweiligen quantisierenden Neuron 300 mehrere Neuron-Eingangssignalwerte 308A zugeführt werden. Das quantisierende Neuron 300 kann eingerichtet sein zum gewichteten Kombinieren der mehreren Neuron-Eingangssignalwerte 308A unter Verwendung eines einem jeweiligen Neuron-Eingangssignalwert 308A zugeordneten Gewichtsfaktor 310. Das gewichtete Kombinieren der mehreren Neuron-Eingangssignalwerte 308A kann ferner das Hinzufügen (zum Beispiel Addieren) eines dem Neuron 300 zugeordneten Biaswerts 312 aufweisen. 4A shows processing by means of each quantizing neuron 300 the multitude of quantizing neurons 300 according to various embodiments. As described above, each quantizing neuron can 300 multiple neuron input signal values 308A are fed. The quantizing neuron 300 can be configured to combine the plurality of neuron input signal values in a weighted manner 308A using a respective neuron input signal value 308A assigned weight factor 310 . The weighted combining of the multiple neuron input signal values 308A can also include adding (e.g. adding) one to the neuron 300 assigned bias value 312 exhibit.

Gemäß verschiedenen Ausführungsformen kann das quantisierende Neuron 300 ferner eingerichtet sein, um bei dem gewichteten Kombinieren der mehreren Neuron-Eingangssignalwerte 308A einen ersten Zufallswert 404 hinzuzufügen (zum Beispiel addieren). Das quantisierende Neuron 300 kann eingerichtet sein zum Ermitteln eines ergänzten Zwischenwerts 402 durch das gewichtete Kombinieren der mehreren Neuron-Eingangssignalwerte 308A und das Hinzufügen (zum Beispiel Addieren) des ersten Zufallswerts 404. Der erste Zufallswert 404 kann einem jeweiligen quantisierenden Neuron 300 der Vielzahl von quantisierenden Neuronen 300 zugeordnet sein. Beispielsweise kann der erste Zufallswert 404 eines quantisierenden Neurons 300 von den ein oder mehreren anderen quantisierenden Neuronen 300 der Vielzahl von quantisierenden Neuronen 300 zugeordneten ersten Zufallswerten 404 verschieden sein.According to various embodiments, the quantizing neuron 300 be further configured to combine the plurality of neuron input signal values in a weighted manner 308A a first random value 404 to add (for example add). The quantizing neuron 300 can be set up to determine a supplemented intermediate value 402 by weighted combining the multiple neuron input signal values 308A and adding (e.g. adding) the first random value 404 . The first random value 404 can be a respective quantizing neuron 300 the multitude of quantizing neurons 300 be assigned. For example, the first random value 404 of a quantizing neuron 300 from the one or more other quantizing neurons 300 the multitude of quantizing neurons 300 associated first random values 404 to be different.

Der Zufallswert 404 kann mittels eines Zufallszahlengenerators erzeugt werden. Der Zufallszahlengenerator kann jede Art von analoger Erzeugung oder digitaler Erzeugung (zum Beispiel mittels eines Algorithmus) einer Zufallszahl aufweisen.The random value 404 can be generated by means of a random number generator. The random number generator can be any type of analog Generation or digital generation (for example by means of an algorithm) of a random number.

Jeder Wert, wie beispielsweise ein Neuron-Eingangssignalwert 308, 308A, eine Gewichtsfaktor 310, ein Biaswert 312, Neuron-Ausgangssignalwert 308, 308B, ein quantisierter Wert, und/oder ein Zufallswert 404, etc., kann mehrere Bits aufweisen. Zum Beispiel kann ein Wert mittels mehrerer Bits repräsentiert werden. Die Anzahl an Bits eines Wertes kann von der Anzahl an Bits eines anderen Wertes verschieden sein. Die Anzahl an Bits kann durch eine Bitbreite angegeben werden. 5A zeigt eine anschauliche Darstellung mehrerer Bits 502 beispielhaft für ein Byte 500A (mit 8 Bits). Es wird darauf hingewiesen, dass die Beschreibung anhand eines Bytes der Veranschaulichung dient und ein Wert jede beliebige Anzahl an Bits (und/oder Bytes) aufweisen kann.Any value, such as a neuron input signal value 308 , 308A , a weight factor 310 , a bias value 312 , Neuron output signal value 308 , 308B , a quantized value, and / or a random value 404 , etc., can have multiple bits. For example, a value can be represented using several bits. The number of bits of one value can be different from the number of bits of another value. The number of bits can be specified by a bit width. 5A shows an illustrative representation of several bits 502 exemplary for a byte 500A (with 8 bits). It should be noted that the description in terms of a byte is for purposes of illustration and a value can have any number of bits (and / or bytes).

Jedem Bit 502A, 502B, 502C, 502D, 502E, 502F, 502G, 502H der mehreren Bits 502 eines Werts kann eine Bitwertigkeit zugeordnet sein. Die Bitwertigkeit eines Bits eines Bytes 500A kann in Abhängigkeit der Bitwertigkeit mit den Zahlen 0 bis 7 beschrieben werden. Die Bitwertigkeit kann beispielsweise mittels MSB 0 (engl.: most significant bit 0), wobei dem höchstwertigen Bit die Zahl 0 und dem niedrigstwertigen Bit die Zahl 7 zugeordnet ist, oder mittels LSB 0 (engl.: least significant bit 0), wobei dem höchstwertigen Bit die Zahl 7 und dem niedrigstwertigen Bit die Zahl 0 zugeordnet ist, angegeben werden. Gemäß der in 5A gezeigten Darstellung kann gemäß MSB 0 dem höchstwertigen Bit 502 die Zahl 0 und dem niedrigstwertigen Bit 502H die Zahl 7 zugeordnet sein.Every bit 502A , 502B , 502C , 502D , 502E , 502F , 502G , 502H of the multiple bits 502 a bit value can be assigned to a value. The bit value of a bit in a byte 500A can be set with the numbers 0 to, depending on the bit value 7th to be discribed. The bit valency can, for example, by means of MSB 0 (most significant bit 0), the most significant bit being the number 0 and the least significant bit being the number 7th is assigned, or by means of LSB 0 (least significant bit 0), where the most significant bit is the number 7th and the number 0 is assigned to the least significant bit. According to the in 5A The representation shown can be the most significant bit according to MSB 0 502 the number 0 and the least significant bit 502H the number 7th be assigned.

Jedes Bit der mehreren Bits 502 kann in Abhängigkeit der Bitwertigkeit einer ersten Gruppe von Bits 504 oder einer zweiten Gruppe von Bits 506 zugeordnet sein. Beispielsweise kann die erste Gruppe von Bits 504 Bits mit einer hohen Bitwertigkeit (auch höherwertige Bits genannt) aufweisen. Die zweite Gruppe von Bits 506 kann beispielsweise Bits mit einer niedrigen Bitwertigkeit (auch niederwertige Bits genannt) aufweisen. Anschaulich in Bezug auf das in 5A dargestellte Byte 500A mit den mehreren Bits 502 kann eine erste Anzahl an Bits beginnend mit dem höchstwertigen Bit 502A der ersten Gruppe von Bits 504 zugeordnet sein und eine zweite Anzahl an Bits beginnend mit dem niedrigstwertigen Bit 502H der zweiten Gruppe von Bits 506 zugeordnet sein kann. Jedes Bit der mehreren Bits 502 kann zum Beispiel entweder der ersten Gruppe von Bits 504 oder der zweiten Gruppe von Bits zugeordnet sein. Beispielsweise können die Bits 502A, 502B, 502C, 502D und 502E der ersten Gruppe von Bits 504, zum Beispiel den höherwertigen Bits, zugeordnet sein und beispielsweise können die Bits 502F, 502G und 502H der zweiten Gruppe von Bits 506, zum Beispiel den niederwertigen Bits, zugeordnet sein. Eine Anzahl an Bits eines Werts kann durch eine Bitbreite beschrieben werden.Each bit of the multiple bits 502 can depending on the bit value of a first group of bits 504 or a second group of bits 506 be assigned. For example, the first group of bits 504 Have bits with a high bit significance (also called higher-order bits). The second group of bits 506 can, for example, have bits with a low bit significance (also called low-order bits). Illustrative in relation to the in 5A represented byte 500A with the multiple bits 502 can have a first number of bits starting with the most significant bit 502A the first group of bits 504 and a second number of bits starting with the least significant bit 502H the second group of bits 506 can be assigned. Each bit of the multiple bits 502 for example, either the first group of bits 504 or assigned to the second group of bits. For example, the bits 502A , 502B , 502C , 502D and 502E the first group of bits 504 , for example the more significant bits, and for example the bits 502F , 502G and 502H the second group of bits 506 , for example, the lower-order bits. A number of bits of a value can be described by a bit width.

In Bezug auf 4A kann der unter Verwendung des gewichteten Kombinierens der mehreren Neuron-Eingangssignalwerte 308A, des Hinzufügens des Zufallswerts 404 und des optionalen Hinzufügens des Biaswerts 312 ermittelte ergänzte Zwischenwert 402 mehrere Bits mit einer zugeordneten Bitwertigkeit aufweisen. Jedes Bit der mehren Bits des ergänzten Zwischenwerts 402 kann einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet sein. Die Bitbreite (Anzahl an Bits) des Zufallswerts 404 kann der Bitbreite der zweiten Gruppe von Bits (zum Beispiel der niederwertigen Bits) des ergänzten Zwischenwerts 402 entsprechen. Gemäß verschiedenen Ausführungsformen kann die Bitbreite des Zufallswerts 404 von der Bitbreite der zweiten Gruppe von Bits des ergänzten Zwischenwerts 402 verschieden sein. Die Bitbreite des Zufallswerts 404 kann beispielsweise kleiner sein als die Bitbreite der zweiten Gruppe von Bits, so dass ein Übergang zwischen einem quantisierenden und einem nicht-quantisierenden neuronalen Netzwerk eingestellt werden kann. Die Bitbreite des Zufallswerts 404 kann beispielsweise größer sein als die Bitbreite der zweiten Gruppe von Bits, so dass eine zusätzliche Entropie (zum Beispiel Unschärfe) dem neuronalen Netzwerk hinzugefügt werden kann.In relation to 4A can be done using the weighted combining of the plurality of neuron input signal values 308A , adding the random value 404 and optionally adding the bias value 312 determined supplemented intermediate value 402 have multiple bits with an assigned bit weight. Each bit of the multiple bits of the supplemented intermediate value 402 can be assigned to a first group of bits or to a second group of bits. The bit width (number of bits) of the random value 404 can be the bit width of the second group of bits (for example the lower-order bits) of the supplemented intermediate value 402 correspond. According to various embodiments, the bit width of the random value 404 on the bit width of the second group of bits of the supplemented intermediate value 402 to be different. The bit width of the random value 404 can for example be smaller than the bit width of the second group of bits, so that a transition between a quantizing and a non-quantizing neural network can be set. The bit width of the random value 404 can for example be larger than the bit width of the second group of bits, so that an additional entropy (for example blurring) can be added to the neural network.

Gemäß verschiedenen Ausführungsformen kann das quantisierende Neuron 300 eingerichtet sein, um den ergänzten Zwischenwert 402 in einem Schritt des gewichteten Kombinierens und Hinzufügens des Zufallswerts 404 zu ermitteln.According to various embodiments, the quantizing neuron 300 be set up to the supplemented intermediate value 402 in a step of weighted combining and adding the random value 404 to investigate.

Gemäß verschiedenen Ausführungsformen kann, wie in 4B dargestellt, das quantisierende Neuron 300 eingerichtet sein, um den ergänzten Zwischenwert 402 in mehreren Schritten zu ermitteln. Beispielsweise kann das quantisierende Neuron 300 eingerichtet sein, um mittels gewichteten Kombinierens der mehreren Neuron-Eingangssignalwerte 308A und Hinzufügens des Biaswert 312 einen Zwischenwert 408 zu ermitteln. Das quantisierende Neuron 300 kann ferner eingerichtet sein, um den ergänzten Zwischenwert 402 mittels Hinzufügens des Zufallswerts 404 zu dem Zwischenwert 408 zu ermitteln. Dies kann im Vergleich zu dem Ermitteln des ergänzten Zwischenwerts 402 in einem Schritt ressourceneffizienter sein.According to various embodiments, as in 4B shown, the quantizing neuron 300 be set up to the supplemented intermediate value 402 to be determined in several steps. For example, the quantizing neuron 300 be set up by means of weighted combining of the plurality of neuron input signal values 308A and adding the bias value 312 an intermediate value 408 to investigate. The quantizing neuron 300 can also be set up to include the supplemented intermediate value 402 by adding the random value 404 to the intermediate value 408 to investigate. This can be compared to the determination of the supplemented intermediate value 402 be more resource efficient in one step.

In Bezug auf 4A und 4B kann das quantisierende Neuron 300 ferner eingerichtet sein zum Quantisieren des ergänzten Zwischenwerts 402. Das quantisierende Neuron 300 kann eingerichtet sein, um mittels Quantisierens des ergänzten Zwischenwerts 402 einen quantisierten ergänzten Zwischenwert 406 zu ermitteln. Der quantisierte ergänzte Zwischenwert 406 kann beispielsweise die Bits der ersten Gruppe von Bits des ergänzten Zwischenwerts 402 aufweisen, zum Beispiel den Bits der ersten Gruppe von Bits des ergänzten Zwischenwerts 402 entsprechen.In relation to 4A and 4B can the quantizing neuron 300 also be set up to quantize the supplemented intermediate value 402 . The quantizing neuron 300 can be set up to quantize the supplemented intermediate value 402 a quantized supplemented intermediate value 406 to investigate. The quantized supplemented intermediate value 406 for example the bits the first group of bits of the supplemented intermediate value 402 have, for example the bits of the first group of bits of the supplemented intermediate value 402 correspond.

Gemäß verschiedenen Ausführungsformen kann die Bitbreite des ergänzten Zwischenwerts 402 vor dem Quantisieren verringert werden, wie beispielsweise mittels einer Wertebereichsanpassung.According to various embodiments, the bit width of the supplemented intermediate value can 402 can be reduced before the quantization, for example by means of a value range adjustment.

Das quantisierende Neuron 300 kann eingerichtet sein zum Ermitteln eines Neuron-Ausgangssignalwerts 308B unter Verwendung des quantisierten ergänzten Zwischenwerts 406. Gemäß verschiedenen Ausführungsformen kann der Neuron-Ausgangssignalwert 308B eines jeweiligen Neurons 300 dem quantisierten ergänzten Zwischenwert 406 des Neurons 300 entsprechen. Beispielsweise kann der Neuron-Ausgangssignalwert 308B den Bits der ersten Gruppe von Bits des ergänzten Zwischenwerts 402 entsprechen.The quantizing neuron 300 can be set up to determine a neuron output signal value 308B using the quantized intermediate supplement 406 . According to various embodiments, the neuron output signal value may 308B of a respective neuron 300 the quantized supplemented intermediate value 406 of the neuron 300 correspond. For example, the neuron output signal value can be 308B the bits of the first group of bits of the supplemented intermediate value 402 correspond.

5B zeigt eine anschauliche Darstellung eines Quantisierens eines mehrere Bits 502 aufweisenden Werts 508 gemäß verschiedenen Ausführungsformen. Jedes Bit der mehreren Bits 502 des Werts 508 kann entweder der ersten Gruppe von Bits 504 oder der zweiten Gruppe von Bits 506 zugeordnet sein. 5B FIG. 10 shows an illustrative representation of quantizing a plurality of bits 502 exhibiting value 508 according to various embodiments. Each bit of the multiple bits 502 of value 508 can either be the first group of bits 504 or the second group of bits 506 be assigned.

Beispielsweise können die Bits 502A, 502B, 502C, 502D und 502E der ersten Gruppe von Bits 504, zum Beispiel den höherwertigen Bits, zugeordnet sein und beispielsweise können die Bits 502F, 502G und 502H der zweiten Gruppe von Bits 506, zum Beispiel den niederwertigen Bits, zugeordnet sein. Ein quantisierter Wert 510 kann beispielsweise die Bits der ersten Gruppe von Bits 504 (zum Beispiel die höherwertigen Bits) aufweisen. Anschaulich kann das Quantisieren des Werts 508 einem Entfernen der Bits der zweiten Gruppe von Bits 506 (zum Beispiel der niederwertigen Bits) entsprechen.For example, the bits 502A , 502B , 502C , 502D and 502E the first group of bits 504 , for example the more significant bits, and for example the bits 502F , 502G and 502H the second group of bits 506 , for example, the lower-order bits. A quantized value 510 for example, the bits of the first group of bits 504 (for example the more significant bits). Quantizing the value can be illustrated 508 removing the bits of the second group of bits 506 (for example the lower-order bits).

Anschaulich kann mittels Quantisierens die Bitbreite eines Werts verringert werden, indem niederwertige Bits abgeschnitten werden.The bit width of a value can clearly be reduced by means of quantization by truncating low-order bits.

4C zeigt eine Verarbeitung mittels eines jeweiligen quantisierenden Neurons 300 der Vielzahl von quantisierenden Neuronen 300 gemäß verschiedenen Ausführungsformen. Das quantisierende Neuron 300 kann eingerichtet sein, um den ergänzten Zwischenwert 402 wie in Bezug auf 4A oder 4B beschrieben zu ermitteln und um den quantisierten ergänzten Zwischenwert 406 mittels Quantisierens des ergänzten Zwischenwerts 402 zu ermitteln. 4C shows processing by means of each quantizing neuron 300 the multitude of quantizing neurons 300 according to various embodiments. The quantizing neuron 300 can be set up to the supplemented intermediate value 402 as in relation to 4A or 4B and to determine the quantized supplemented intermediate value 406 by quantizing the supplemented intermediate value 402 to investigate.

Das quantisierende Neuron 300 kann ferner eingerichtet sein zum Ermitteln eines quantisierten mehrfach ergänzten Zwischenwerts 412. Das quantisierende Neuron 300 kann eingerichtet sein, um den quantisierten mehrfach ergänzten Zwischenwert 412 mittels Hinzufügens (zum Beispiel Addierens) eines zweiten Zufallswerts 410 zu den quantisierten ergänzten Zwischenwert 406 zu ermitteln.The quantizing neuron 300 can furthermore be set up to determine a quantized multiple supplemented intermediate value 412 . The quantizing neuron 300 can be set up to include the quantized multiply supplemented intermediate value 412 by adding (e.g. adding) a second random value 410 to the quantized supplemented intermediate value 406 to investigate.

Der zweite Zufallswert 410 kann mittels eines Zufallszahlengenerators erzeugt werden. Der zweite Zufallswert 410 kann beispielsweise basierend auf (zum Beispiel während) des Quantisierens des ergänzten Zwischenwerts 402 ermittelt werden.The second random value 410 can be generated by means of a random number generator. The second random value 410 can for example be based on (for example during) the quantization of the supplemented intermediate value 402 be determined.

Das quantisierende Neuron 300 kann eingerichtet sein zum Ermitteln des Neuron-Ausgangssignalwerts 308B unter Verwendung des quantisierten mehrfach ergänzten Zwischenwerts 412. Gemäß verschiedenen Ausführungsformen kann der Neuron-Ausgangssignalwert 308B eines jeweiligen Neurons 300 dem quantisierten mehrfach ergänzten Zwischenwert 412 des Neurons 300 entsprechen.The quantizing neuron 300 can be set up to determine the neuron output signal value 308B using the quantized multiple supplemented intermediate value 412 . According to various embodiments, the neuron output signal value may 308B of a respective neuron 300 the quantized multiple supplemented intermediate value 412 of the neuron 300 correspond.

5C zeigt eine anschauliche Darstellung eines Ermittelns eines Zufallswerts, wie beispielsweise des zweiten Zufallswerts 410, gemäß verschiedenen Ausführungsformen. Wie in Bezug auf 5B beschrieben, können die Bits der mehreren Bits eines Werts 508 in Abhängigkeit der Bitwertigkeit einer ersten Gruppe von Bits 504 oder einer zweiten Gruppe von Bits 506 zugeordnet sein. Beispielsweise können die Bits 502A, 502B, 502C, 502D und 502E der ersten Gruppe von Bits 504, zum Beispiel den höherwertigen Bits, zugeordnet sein und beispielsweise können die Bits 502F, 502G und 502H der zweiten Gruppe von Bits 506, zum Beispiel den niederwertigen Bits, zugeordnet sein. 5C shows an illustrative representation of a determination of a random value, such as the second random value 410 , according to various embodiments. As in relation to 5B described, the bits can be the multiple bits of a value 508 depending on the bit value of a first group of bits 504 or a second group of bits 506 be assigned. For example, the bits 502A , 502B , 502C , 502D and 502E the first group of bits 504 , for example the more significant bits, and for example the bits 502F , 502G and 502H the second group of bits 506 , for example, the lower-order bits.

Der quantisierte Wert 510 kann die Bits der ersten Gruppe von Bits 504 (zum Beispiel die höherwertigen Bits) aufweisen. Der mindestens eine Prozessor 108 kann eingerichtet sein zum Ermitteln eines Akkumulationswerts 512. Der Akkumulationswert 512 kann die Bits der zweiten Gruppe von Bits 506 (zum Beispiel die niederwertigen Bits) aufweisen.The quantized value 510 can be the bits of the first group of bits 504 (for example the more significant bits). The at least one processor 108 can be set up to determine an accumulation value 512 . The accumulation value 512 can be the bits of the second group of bits 506 (for example the low-order bits).

Gemäß verschiedenen Ausführungsformen kann das Verarbeiten eines Eingabedatenvektors und das Ermitteln eines Ausgabedatenvektors für einen zugeordneten Eingabedatenvektor mittels des trainierten neuronalen Netzwerks 202 mehrere Iterationen aufweisen. Beispielsweise kann das trainierte neuronale Netzwerk 202 mehrere Ausgabedatenvektoren für jeweils zugeordnete Eingabedatenvektoren ermitteln. In jeder Iteration der mehreren Iterationen kann ein jeweiliges quantisierendes Neuron 300 der Vielzahl von quantisierenden Neuronen 300 einen jeweiligen Neuron-Ausgangssignalwert 308B für mehrere Neuron-Eingangssignalwerte 308A ermitteln. Ein quantisierendes Neuron 300 kann eingerichtet sein, um in jeder Iteration der mehreren Iterationen einen Akkumulationswert 512 zu ermitteln. Das quantisierende Neuron 300 kann eingerichtet sein, um den Akkumulationswert 512 in einer jeden Iteration der mehreren Iterationen derart zu ermitteln, dass die Bits der zweiten Gruppe von Bits 506 zu einem zugeordneten Akkumulationswert 512 einer vorherigen Iteration der mehreren Iterationen hinzugefügt (zum Beispiel addiert) werden. Anschaulich werden die Bits der zweiten Gruppe von Bits 506 über mehrere Iterationen aufsummiert. Wie oben beschrieben, kann der mindestens eine Prozessor 108 das trainierte neuronale Netzwerk 202 implementieren und kann bei der Verarbeitung einen Speicher (zum Beispiel einen Flip-Flop, zum Beispiel ein RAM), wie beispielsweise die Speichervorrichtung 106, verwenden. Der mindestens eine Prozessor 108 kann eingerichtet sein, um den in einer jeweiligen Iteration der mehreren Iterationen ermittelten Akkumulationswert 512 zu speichern.According to various embodiments, the processing of an input data vector and the determination of an output data vector for an assigned input data vector can be carried out by means of the trained neural network 202 have multiple iterations. For example, the trained neural network 202 determine multiple output data vectors for each assigned input data vector. In each iteration of the multiple iterations, a respective quantizing neuron 300 the multitude of quantizing neurons 300 a respective neuron output signal value 308B for multiple neuron input signal values 308A determine. A quantizing neuron 300 can be set up in each iteration of the multiple Iterations have an accumulation value 512 to investigate. The quantizing neuron 300 can be set up to the accumulation value 512 in each iteration of the multiple iterations in such a way as to determine the bits of the second group of bits 506 to an associated accumulation value 512 added (e.g., added) to a previous iteration of the multiple iterations. The bits of the second group of bits become clear 506 summed up over several iterations. As described above, the at least one processor 108 the trained neural network 202 and can implement a memory (for example a flip-flop, for example a RAM), such as the storage device, during processing 106 , use. The at least one processor 108 can be set up to use the accumulation value determined in a respective iteration of the multiple iterations 512 save.

Anschaulich kann das Aufsummieren des Akkumulationswerts 512 über mehrere Iterationen hinweg zu einem Überlaufbit 502E' (auch arithmetischer Überlauf, Zählerüberlauf oder Bitüberlau genannt) führen. Beispielsweise kann sich die Anzahl an Bits des Akkumulationswerts 512 erhöhen.The summing up of the accumulation value can be illustrated 512 lead over several iterations to an overflow bit 502E '(also called arithmetic overflow, counter overflow or bit overflow). For example, the number of bits of the accumulation value can be 512 raise.

Ein Zufallswert 514, wie beispielsweise der zweite Zufallswert 410, kann das Überlaufbit 502E' aufweisen, zum Beispiel diesem entsprechen. Anschaulich wird bei der Quantisierung eines Wertes, wie beispielsweise des Zwischenwertes oder des ergänzten Zwischenwertes, zufällig ein Überlaufbit erzeugt oder nicht erzeugt.A random value 514 such as the second random value 410 , may have the overflow bit 502E ', for example correspond to this. Clearly, when a value is quantized, such as the intermediate value or the supplemented intermediate value, an overflow bit is randomly generated or not generated.

Gemäß verschiedenen Ausführungsformen können die Bits des Akkumulationswerts 512 in Abhängigkeit der Bitwertigkeit einer ersten Untergruppe von Bits oder einer zweiten Untergruppe von Bits zugeordnet sein. Die Bitbreite der zweiten Untergruppe von Bits kann der Bitbreite der zweiten Gruppe von Bits 506 des Werts 508 entsprechen. Der Zufallswert 514 kann die Bits der ersten Untergruppe von Bits aufweisen, zum Beispiel diesen entsprechen.According to various embodiments, the bits of the accumulation value 512 be assigned to a first subgroup of bits or a second subgroup of bits depending on the bit significance. The bit width of the second subgroup of bits can be the bit width of the second group of bits 506 of value 508 correspond. The random value 514 may have the bits of the first subgroup of bits, for example correspond to them.

Das Hinzufügen eines Zufallswerts 514, wie beispielsweise des zweiten Zufallswerts 410, zu einem quantisierten Wert 510 kann das Addieren des Zufallswerts 514 (zum Beispiel des Überlaufbits 502E) zu dem quantisierten Wert 510 aufweisen. Beispielsweise kann der quantisierte Wert 510 unter Verwendung des Zufallswerts 514 zu einem quantisierten ergänzten Wert ergänzt werden.Adding a random value 514 such as the second random value 410 , to a quantized value 510 can adding the random value 514 (for example the overflow bit 502E) to the quantized value 510 exhibit. For example, the quantized value 510 using the random value 514 can be added to a quantized supplemented value.

Anschaulich kann ein durch Aufsummieren des Akkumulationswerts 512 über mehrere Iterationen hinweg ermitteltes (zum Beispiel erzeugtes) Überlaufbit (zum Beispiel das Überlaufbit 502E') zu einem quantisierten Wert 510 addiert werden.A can be illustrated by adding up the accumulation value 512 overflow bit (for example the overflow bit 502E ') determined (for example generated) over several iterations to a quantized value 510 can be added.

4D zeigt eine Verarbeitung mittels eines jeweiligen quantisierenden Neurons 300 der Vielzahl von quantisierenden Neuronen 300 gemäß verschiedenen Ausführungsformen. Das quantisierende Neuron 300 kann, wie in Bezug auf 4B beschrieben, eingerichtet sein zum Ermitteln des Zwischenwerts 408 durch gewichtetes Kombinieren der mehreren Neuron-Eingangssignale 308A. 4D shows processing by means of each quantizing neuron 300 the multitude of quantizing neurons 300 according to various embodiments. The quantizing neuron 300 can how regarding 4B described, be set up to determine the intermediate value 408 by weighted combining the multiple neuron input signals 308A .

Das quantisierende Neuron 300 kann eingerichtet sein zum Quantisieren des Zwischenwerts 408. Beispielsweise kann der Zwischenwert 408 mehrere Bits mit einer zugeordneten Bitwertigkeit aufweisen und das quantisierende Neuron 300 kann eingerichtet sein, um in Abhängigkeit der Bitwertigkeit einen quantisierten Zwischenwert 414 zu ermitteln. Beispielsweise können die Bits der mehreren Bits des Zwischenwerts 408 einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet sein und der quantisierten Zwischenwert 414 kann die Bits der ersten Gruppe von Bits aufweisen, zum Beispiel den Bits der ersten Gruppe von Bits entsprechen.The quantizing neuron 300 can be set up to quantize the intermediate value 408 . For example, the intermediate value 408 have several bits with an assigned bit weight and the quantizing neuron 300 can be set up to generate a quantized intermediate value as a function of the bit weight 414 to investigate. For example, the bits of the multiple bits of the intermediate value 408 a first group of bits or a second group of bits and the quantized intermediate value 414 may have the bits of the first group of bits, for example correspond to the bits of the first group of bits.

Das quantisierende Neuron 300 kann, wie in Bezug auf 5C beschrieben, eingerichtet sein, um einen Zufallswert, die beispielsweise den Zufallswert 410, unter Verwendung eines Akkumulationswerts zu ermitteln. Beispielsweise kann das quantisierende Neuron 300 eingerichtet sein zum Ermitteln des Zufallswerts 410 unter Verwendung der Bits der zweiten Gruppe von Bits des Zwischenwerts 408. Der Zufallswert 410 kann einem Überlaufbit des über mehrere Iterationen aufsummierten Akkumulationswerts entsprechen. Das quantisierende Neuron 300 kann eingerichtet sein, um den quantisierten ergänzten Zwischenwert 406 durch Hinzufügen des Zufallswerts 410 zu dem quantisierten Zwischenwert 414 zu ermitteln.The quantizing neuron 300 can how regarding 5C described, be set up to a random value, for example the random value 410 , using an accumulation value. For example, the quantizing neuron 300 be set up to determine the random value 410 using the bits of the second group of bits of the intermediate value 408 . The random value 410 can correspond to an overflow bit of the accumulation value added up over several iterations. The quantizing neuron 300 can be set up to the quantized supplemented intermediate value 406 by adding the random value 410 to the quantized intermediate value 414 to investigate.

6 zeigt ein Verfahren 600 zum Betreiben eines trainierten neuronalen Netzwerkes gemäß verschiedenen Ausführungsformen. Das Verfahren 600 kann ein Zuführen von mehreren Neuron-Eingangssignalwerten zu einem jeweiligen Neuron eines trainierten neuronalen Netzwerkes aufweisen (in 602). Das Verfahren 600 kann ferner ein gewichtetes Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert aufweisen (in 604). 6th shows a procedure 600 for operating a trained neural network according to various embodiments. The procedure 600 may include supplying a plurality of neuron input signal values to a respective neuron of a trained neural network (in 602). The procedure 600 may further include weighted combining and quantizing the neuron input signal values while adding a random value to a respective neuron output signal value (in 604).

Gemäß verschiedenen Ausführungsformen kann das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert ein Ermitteln eines ergänzten Zwischenwerts eines jeweiligen Neurons durch gewichtetes Kombinieren der Neuron-Eingangssignalwerte und Hinzufügen eines Zufallswerts (zum Beispiel eines ersten Zufallswerts) aufweisen. Das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert kann ferner ein Ermitteln des Neuron-Ausgangssignalwerts des Neurons mittels Quantisierens des ergänzten Zwischenwerts aufweisen.According to various embodiments, the weighted combining and quantizing the neuron input signal values while adding a random value to a respective neuron output signal value can include determining a supplemented intermediate value of a respective neuron by weighted combining the neuron input signal values and adding a random value (for example a first random value) . The weighted combining and quantizing of the neuron input signal values while adding a random value to a respective neuron output signal value can further comprise determining the neuron output signal value of the neuron by quantizing the supplemented intermediate value.

Gemäß verschiedenen Ausführungsformen kann das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert ein Ermitteln eines Zwischenwerts eines jeweiligen Neurons durch gewichtetes Kombinieren der Neuron-Eingangssignalwerte aufweisen. Das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte kann ferner ein Quantisieren des Zwischenwerts und ein Ermitteln des Neuron-Ausgangssignalwerts durch Hinzufügen eines Zufallswerts (zum Beispiel eines zweiten Zufallswerts) zu dem quantisierten Zwischenwert aufweisen.According to various embodiments, the weighted combining and quantizing of the neuron input signal values while adding a random value to a respective neuron output signal value can include determining an intermediate value of a respective neuron by weighted combining of the neuron input signal values. The weighted combining and quantizing the neuron input signal values can further comprise quantizing the intermediate value and determining the neuron output signal value by adding a random value (for example a second random value) to the quantized intermediate value.

7 zeigt ein System 700 mit einem trainierten neuronalen Netzwerk gemäß verschiedenen Ausführungsformen. Das System 700 kann eine erste Vorrichtung 702 aufweisen. Die erste Vorrichtung 702 kann eine computergesteuerte Vorrichtung sein, wie beispielsweise ein Roboter, ein Fahrzeug, ein Haushaltsgerät, ein Elektrowerkzeug, eine Fertigungsmaschine, ein persönlicher Assistent, ein Zugangskontrollsystem etc. Die erste Vorrichtung 702 kann eine Vorrichtung zum Bereitstellen (zum Beispiel Ermitteln, zum Beispiel Detektieren) von Informationen, wie beispielsweise ein Überwachungssystem oder ein medizinisches (Bildgebungs-)System sein. Das System 700 kann ein Defekt-Detektionssystem sein und die erste Vorrichtung 702 kann ein Fließband, dass Teile (zum Beispiel Bauteile) bewegt, sein oder aufweisen. Das System 700 kann ein System für autonomes Fahren sein und die erste Vorrichtung 702 kann ein Fahrzeug sein. Das System 700 kann ein eingebettetes System (engl.: embedded system) sein. 7th shows a system 700 with a trained neural network according to various embodiments. The system 700 can be a first device 702 exhibit. The first device 702 can be a computer-controlled device, such as a robot, a vehicle, a household appliance, a power tool, a manufacturing machine, a personal assistant, an access control system, etc. The first device 702 can be a device for providing (for example ascertaining, for example detecting) information, such as a monitoring system or a medical (imaging) system. The system 700 may be a defect detection system and the first device 702 can be or have an assembly line that moves parts (e.g. components). The system 700 can be a system for autonomous driving and the first device 702 can be a vehicle. The system 700 can be an embedded system.

Das System 700 kann ferner ein oder mehrere Sensoren 704 aufweisen. Die ein oder mehreren Sensoren 704 können eingerichtet sein zum Bereitstellen von Daten, wie beispielsweise Bilder, die die Umgebung eines Fahrzeuges oder Bauteile auf einem Fließband zeigen.The system 700 can also have one or more sensors 704 exhibit. The one or more sensors 704 can be set up to provide data such as images showing the surroundings of a vehicle or components on an assembly line.

Das System 700 kann ferner eine zweite Vorrichtung 706 aufweisen. Die zweite Vorrichtung 706 kann das trainierte neuronalen Netzwerk 202 aufweisen. Das trainierte neuronalen Netzwerk 202 kann, wie oben beschrieben, eingerichtet sein zum Bereitstellen von ein oder mehreren Ausgabedatenvektoren für die Daten. Das System 700 kann eine Steuervorrichtung 708 aufweisen. Die Steuervorrichtung 708 kann eingerichtet sein zum Steuern der ersten Vorrichtung 702. Die Steuervorrichtung 708 kann eingerichtet sein, um die erste Vorrichtung 702 unter Verwendung der mittels des trainierten neuronalen Netzwerkes 202 bereitgestellten ein oder mehreren Ausgabedatenvektoren zu steuern.The system 700 can further include a second device 706 exhibit. The second device 706 can the trained neural network 202 exhibit. The trained neural network 202 can, as described above, be set up to provide one or more output data vectors for the data. The system 700 can be a control device 708 exhibit. The control device 708 can be configured to control the first device 702 . The control device 708 can be configured to the first device 702 using the means of the trained neural network 202 to control one or more output data vectors provided.

Claims (14)

Verfahren zum Betreiben eines trainierten neuronalen Netzwerkes (202) mit einer Vielzahl von quantisierenden Neuronen (300), das Verfahren aufweisend: • Zuführen von mehreren Neuron-Eingangssignalwerten (308A) zu einem jeweiligen Neuron (300) des trainierten neuronalen Netzwerkes (202), · Gewichtetes Kombinieren und Quantisieren der Neuron-Eingangssignalwerte (308) unter Hinzufügen eines Zufallswerts (404, 410) zu einem jeweiligen Neuron-Ausgangssignalwert (308B).A method for operating a trained neural network (202) with a plurality of quantizing neurons (300), the method comprising: • supply of several neuron input signal values (308A) to a respective neuron (300) of the trained neural network (202), Weighted combining and quantizing the neuron input signal values (308) while adding a random value (404, 410) to a respective neuron output signal value (308B). Verfahren nach Anspruch 1, wobei das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte (308A) unter Hinzufügen des Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert (308B) aufweist: • Ermitteln eines ergänzten Zwischenwerts (402) eines jeweiligen Neurons (300) durch gewichtetes Kombinieren der Neuron-Eingangssignalwerte (308A) und Hinzufügen des Zufallswerts (404); • Ermitteln des Neuron-Ausgangssignalwerts (308B) des Neurons (300) mittels Quantisieren des ergänzten Zwischenwerts (402).Procedure according to Claim 1 wherein the weighted combining and quantizing the neuron input signal values (308A) while adding the random value to a respective neuron output signal value (308B) comprises: • determining a supplemented intermediate value (402) of a respective neuron (300) by weighted combining the neuron input signal values (308A) and adding the random value (404); • Determination of the neuron output signal value (308B) of the neuron (300) by means of quantizing the supplemented intermediate value (402). Verfahren nach Anspruch 2, wobei der ergänzte Zwischenwert (402) mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweist, wobei jedes Bit der mehreren Bits des ergänzten Zwischenwerts in Abhängigkeit der zugeordneten Bitwertigkeiten einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet ist, und wobei das Ermitteln eines Neuron-Ausgangssignalwerts (308B) eines Neurons (300) mittels Quantisieren des ergänzten Zwischenwerts (402) ein Ermitteln des Neuron-Ausgangssignalwerts (308B) unter Verwendung der Bits der ersten Gruppe von Bits des ergänzten Zwischenwerts (402) aufweist.Procedure according to Claim 2 , wherein the supplemented intermediate value (402) has a plurality of bits with a respectively assigned bit valency, each bit of the plurality of bits of the supplemented intermediate value being assigned to a first group of bits or a second group of bits as a function of the assigned bit valencies, and wherein the determination of one Neuron output signal value (308B) of a neuron (300) by quantizing the supplemented intermediate value (402) comprises determining the neuron output signal value (308B) using the bits of the first group of bits of the supplemented intermediate value (402). Verfahren nach Anspruch 3, wobei der Neuron-Ausgangssignalwert (308B) den Bits der ersten Gruppe von Bits entspricht.Procedure according to Claim 3 wherein the neuron output value (308B) corresponds to the bits of the first group of bits. Verfahren nach einem der Ansprüche 2 bis 4, wobei das Ermitteln eines Neuron-Ausgangssignalwerts (308B) eines Neurons (300) mittels Quantisieren des ergänzten Zwischenwerts (402) ferner aufweist: • Erzeugen eines zweiten Zufallswerts (410) mittels eines Zufallszahlengenerators; • Ermitteln des Neuron-Ausgangssignalwerts (308B) des Neurons (300) durch Hinzufügen des zweiten Zufallswerts (410) zu dem quantisierten ergänzten Zwischenwert (406).Method according to one of the Claims 2 until 4th wherein determining a neuron output signal value (308B) of a neuron (300) by means of quantizing the supplemented intermediate value (402) further comprises: • generating a second random value (410) by means of a random number generator; • Find the neuron output value (308B) of the neuron (300) by adding the second Random value (410) to the quantized supplemented intermediate value (406). Verfahren nach Anspruch 1, wobei das gewichtete Kombinieren und Quantisieren der Neuron-Eingangssignalwerte (308A) unter Hinzufügen des Zufallswerts (404) zu einem jeweiligen Neuron-Ausgangssignalwert (308B) aufweist: • Ermitteln eines Zwischenwerts (408) eines jeweiligen Neurons (300) durch gewichtetes Kombinieren der zugeordneten Neuron-Eingangssignalwerte (308A); • Quantisieren des Zwischenwerts (408); • Erzeugen des Zufallswerts (410) mittels eines Zufallszahlengenerators; • Ermitteln des Neuron-Ausgangssignalwerts (308B) des Neurons (300) durch Hinzufügen des Zufallswerts (410) zu dem quantisierten Zwischenwert (414).Procedure according to Claim 1 wherein the weighted combining and quantizing the neuron input signal values (308A) while adding the random value (404) to a respective neuron output signal value (308B) comprises: Neuron input signal values (308A); • quantizing the intermediate value (408); • generating the random value (410) by means of a random number generator; • Determine the neuron output signal value (308B) of the neuron (300) by adding the random value (410) to the quantized intermediate value (414). Verfahren nach Anspruch 6, wobei der Zwischenwert (408) mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweist, wobei jedes Bit der mehreren Bits des Zwischenwerts in Abhängigkeit der zugeordneten Bitwertigkeiten einer ersten Gruppe von Bits oder einer zweiten Gruppe von Bits zugeordnet ist, und wobei das Quantisieren des Zwischenwerts ein Ermitteln eines quantisierten Zwischenwerts unter Verwendung der Bits der ersten Gruppe von Bits des Zwischenwerts aufweist.Procedure according to Claim 6 , wherein the intermediate value (408) has a plurality of bits with a respectively assigned bit valency, each bit of the plurality of bits of the intermediate value being assigned to a first group of bits or a second group of bits as a function of the assigned bit valencies, and wherein the quantizing of the intermediate value is a Determining a quantized intermediate value using the bits of the first group of bits of the intermediate value. Verfahren nach Anspruch 7, wobei der quantisierte Zwischenwert (414) den Bits der ersten Gruppe von Bits des Zwischenwerts entspricht.Procedure according to Claim 7 wherein the quantized intermediate value (414) corresponds to the bits of the first group of bits of the intermediate value. Verfahren nach einem der Ansprüche 6 bis 8, wobei das Verfahren das Durchführen von mehreren Iterationen des Zuführens von mehreren Neuron-Eingangssignalwerten (308A) zu einem jeweiligen Neuron (300) des trainierten neuronalen Netzwerkes (202) und des Gewichteten Kombinierens und Quantisierens der Neuron-Eingangssignalwerte (308A) unter Hinzufügen eines Zufallswerts zu einem jeweiligen Neuron-Ausgangssignalwert (308B) aufweist, wobei das Erzeugen des Zufallswerts (410) mittels eines Zufallszahlengenerators in einer jeden Iteration aufweist: • Ermitteln eines Akkumulationswerts des Neurons (300) durch Addieren der Bits der zweiten Gruppe von Bits zu einem Akkumulationswert einer vorherigen Iteration; und • Ermitteln des Zufallswerts (410) unter Verwendung des Akkumulationswerts.Method according to one of the Claims 6 until 8th wherein the method comprises performing multiple iterations of supplying multiple neuron input signal values (308A) to a respective neuron (300) of the trained neural network (202) and weighted combining and quantizing the neuron input signal values (308A) while adding a random value to a respective neuron output signal value (308B), the generation of the random value (410) by means of a random number generator in each iteration comprising: previous iteration; and • determining the random value (410) using the accumulation value. Verfahren nach Anspruch 9, wobei der Zufallswert einem Überlaufbit des Akkumulationswerts entspricht.Procedure according to Claim 9 , wherein the random value corresponds to an overflow bit of the accumulation value. Verfahren nach Anspruch 10, wobei der Akkumulationswert mehrere Bits mit einer jeweils zugeordneten Bitwertigkeit aufweist, wobei jedes Bit der mehreren Bits des Akkumulationswertes in Abhängigkeit der jeweils zugeordneten Bitwertigkeit einer ersten Untergruppe von Bits oder einer zweiten Untergruppe von Bits zugeordnet ist, wobei die Anzahl an Bits der zweiten Untergruppe von Bits des Akkumulationswerts der Anzahl an Bits der zweiten Gruppe von Bits des Zwischenwerts entspricht, und wobei der Zufallswert den Bits der ersten Untergruppe von Bits des Akkumulationswerts entspricht.Procedure according to Claim 10 , wherein the accumulation value has a plurality of bits with a respectively assigned bit valency, each bit of the plurality of bits of the accumulation value being assigned to a first subgroup of bits or a second subgroup of bits depending on the respectively assigned bit valence, the number of bits of the second subgroup of Bits of the accumulation value corresponds to the number of bits of the second group of bits of the intermediate value, and wherein the random value corresponds to the bits of the first subgroup of bits of the accumulation value. Vorrichtung, die ein oder mehrere Prozessoren aufweist, wobei die ein oder mehreren Prozessoren eingerichtet sind, um das Verfahren nach einem der Ansprüche 1 bis 11 auszuführen.Device having one or more processors, wherein the one or more processors are set up to perform the method according to one of the Claims 1 until 11 to execute. Computerprogrammprodukt, das Programminstruktionen speichert, welche, wenn sie ausgeführt werden, das Verfahren nach einem der Ansprüche 1 bis 11 ausführen.Computer program product that stores program instructions which, when executed, perform the method according to one of the Claims 1 until 11 carry out. Nichtflüchtiges Speichermedium, das Programminstruktionen speichert, welche, wenn sie ausgeführt werden, das Verfahren nach einem der Ansprüche 1 bis 11 ausführen.Non-volatile storage medium that stores program instructions which, when executed, carry out the method according to one of the Claims 1 until 11 carry out.
DE102020205130.5A 2020-04-23 2020-04-23 Apparatus and method for operating a trained neural network Pending DE102020205130A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102020205130.5A DE102020205130A1 (en) 2020-04-23 2020-04-23 Apparatus and method for operating a trained neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020205130.5A DE102020205130A1 (en) 2020-04-23 2020-04-23 Apparatus and method for operating a trained neural network

Publications (1)

Publication Number Publication Date
DE102020205130A1 true DE102020205130A1 (en) 2021-10-28

Family

ID=78260830

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020205130.5A Pending DE102020205130A1 (en) 2020-04-23 2020-04-23 Apparatus and method for operating a trained neural network

Country Status (1)

Country Link
DE (1) DE102020205130A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018130084A1 (en) 2017-12-28 2019-07-04 Intel Corporation Dynamic quantization of neural networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018130084A1 (en) 2017-12-28 2019-07-04 Intel Corporation Dynamic quantization of neural networks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KRISHNAMOORTHI, Raghuraman: Quantizing deep convolutional networks for efficient inference: A whitepaper. arXiv preprint arXiv:1806.08342, 2018
WU, Shuang [et al.]: Training and inference with integers in deep neural networks. arXiv preprint arXiv:1802.04680, 2018

Similar Documents

Publication Publication Date Title
DE102018130084A1 (en) Dynamic quantization of neural networks
EP3785177B1 (en) Method and device for determining a network-configuration of a neural network
EP3590078B1 (en) Neural network system
DE102017223559A1 (en) DEVICE FOR ADJUSTING THE FLASHING POINT OF A CAMERA AND CONTROL METHOD FOR THEM
DE102019122818A1 (en) Neural network device for a neural network operation, method of operating a neural network device and application processor incorporating the neural network device
DE112020000448T5 (en) CAMERA SELF CALIBRATION NETWORK
DE102020215461A1 (en) Apparatus and method for training an image generator
CN110245747B (en) Image processing method and device based on full convolution neural network
DE102021200012A1 (en) OPTIMIZED QUANTIZATION FOR NEURAL NETWORKS WITH REDUCED RESOLUTION
DE102019213547A1 (en) Device and method for training a model and vehicle
DE102019210507A1 (en) Device and computer-implemented method for processing digital sensor data and training methods therefor
DE102020205130A1 (en) Apparatus and method for operating a trained neural network
DE102019209562B4 (en) Device and method for training a neural network and device and method for validating a neural network
DE102020205129A1 (en) Apparatus and method for training a neural network
DE102018101166A1 (en) AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY
EP3811199B1 (en) Computing unit, method and computer program for multiplying at least two multiplicands
DE102019214546B4 (en) Computer-implemented method and apparatus for optimizing an artificial neural network architecture
DE102020123155A1 (en) Artificial neural network quantization method and operation method using an artificial neural network
DE102019220615A1 (en) Method and device for recognizing and classifying objects
EP3796231A1 (en) Device and method for generating a compressed network from a trained neural network
DE102019130484A1 (en) Method and device for training an ensemble of neural networks
DE102019107817A1 (en) Method for simulating a dynamic system
US11881028B2 (en) Vehicle lidar system with neural network-based dual density point cloud generator
DE102021124204A1 (en) Method and device for estimating the resource expenditure of a neural network
DE102021124203A1 (en) Method and device for training a neural network with quantized parameters

Legal Events

Date Code Title Description
R163 Identified publications notified