DE102018105198A1 - Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit - Google Patents

Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit Download PDF

Info

Publication number
DE102018105198A1
DE102018105198A1 DE102018105198.0A DE102018105198A DE102018105198A1 DE 102018105198 A1 DE102018105198 A1 DE 102018105198A1 DE 102018105198 A DE102018105198 A DE 102018105198A DE 102018105198 A1 DE102018105198 A1 DE 102018105198A1
Authority
DE
Germany
Prior art keywords
depth
vector
matrix
input
layer
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
DE102018105198.0A
Other languages
English (en)
Inventor
William John Gulland
Reginald Clifford Young
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.)
Google LLC
Original Assignee
Google LLC
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
Priority claimed from US15/452,624 external-priority patent/US9691019B1/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE102018105198A1 publication Critical patent/DE102018105198A1/de
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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Length Measuring Devices With Unspecified Measuring Means (AREA)

Abstract

Verfahren, Systeme und Einrichtungen, die Computerprogramme enthalten, die auf Computerspeichermedien codiert sind, zur Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit. Eines aus den Verfahren enthält: Empfangen einer Anforderung, Netzeingaben für ein neuronales Netz unter Verwendung einer integrierten Schaltung zu verarbeiten, wobei das neuronale Netz eine Tiefenverkettungsschicht des neuronalen Netzes umfasst; und Erzeugen von Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung Operationen ausführt, die umfassen: für jeden räumlichen Ort in einem ersten Eingabetensor für die Tiefenverkettungsschicht und einem zweiten Eingabetensor für die Tiefenverkettungsschicht: Multiplizieren unter Verwendung der Matrixberechnungseinheit eines zweiten Tiefenvektors für den räumlichen Ort mit einer Verschiebegewichtsmatrix für die Tiefenverkettungsschicht, um einen verschobenen zweiten Tiefenvektor zu erzeugen; und Addieren des verschobenen zweiten Tiefenvektors und eines ersten Eingabetiefenvektors für den räumlichen Ort, um einen verketteten Tiefenvektor zu erzeugen.

Description

  • HINTERGRUND
  • Diese Anmeldung bezieht sich auf das Ausführen von Berechnungen für neuronale Netze in Hardware.
  • Neuronale Netze sind Maschinenlernmodelle, die eine oder mehrere Schichten von Modellen einsetzen, um eine Ausgabe, z. B. eine Klassifikation, für eine empfangene Eingabe zu erzeugen. Einige neuronale Netze enthalten eine oder mehrere verdeckte Schichten zusätzlich zu einer Ausgabeschicht. Die Ausgabe jeder verdeckten Schicht wird als Eingabe für eine oder mehrere andere Schichten in dem Netz verwendet, d. h. eine oder mehrere verdeckte Schichten oder die Ausgabeschicht des neuronalen Netzes. Jede Schicht des Netzes erzeugt eine Ausgabe aus einer empfangenen Eingabe in Übereinstimmung mit aktuellen Werten einer jeweiligen Menge von Parametern.
  • Einige neuronale Netze enthalten eine Tiefenverkettungsschicht, die als Eingabe zwei oder mehrere Tensoren empfängt, d. h. mehrdimensionale Matrizen, die die Ausgaben anderer Schichten in dem neuronalen Netz sind, und die Eingabetensoren entlang der Tiefendimension verkettet. Insbesondere weist jeder Eingabetensor zwei räumliche Dimensionen x und y und eine Tiefendimension z auf. Durch Verketten von zwei Eingabetensoren, von denen einer die Dimensionen x1 mal y1 mal z1 aufweist und der andere die Dimensionen x1 mal y1 mal z2 aufweist, entlang der Tiefendimension z erzeugt die Tiefenverkettungsschicht einen Ausgabetensor, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist. Die Ausgabe der Tiefenverkettungsschicht kann dann als Eingabe für eine oder mehrere andere Schichten in dem neuronalen Netz bereitgestellt werden oder als die Ausgabe des neuronalen Netzes verwendet werden.
  • ZUSAMMENFASSUNG
  • Diese Anmeldung beschreibt Technologien zum Ausführen einer Verkettung von zwei Tensoren entlang der Tiefendimension unter Verwendung einer Matrixberechnungseinheit. Diese Technologien betreffen im Allgemeinen das Empfangen einer Anforderung, Netzeingaben für ein neuronales Netz zu verarbeiten, das eine Tiefenverkettungsschicht auf einer integrierten Schaltung zum Ausführen von Berechnungen des neuronalen Netzes enthält. Die integrierte Schaltung enthält eine Matrixberechnungseinheit, die Vektor-Matrix-Multiplikationen in Hardware ausführt, jedoch eine Tiefenverkettungsoperation nicht direkt in Hardware ausführen kann. Stattdessen erzeugt ein Verarbeitungssystem des neuronalen Netzes Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung Operationen in Hardware unter Verwendung der Matrixberechnungseinheit ausführt, die eine Ausgabe erzeugen, die die Spezifikation der Tiefenverkettungsschicht erfüllt.
  • Der in dieser Anmeldung beschriebene Gegenstand kann in speziellen Ausführungsformen implementiert sein, um einen oder mehrere aus den folgenden Vorteilen zu realisieren. Eine Ausgabe, die die Spezifikation einer Tiefenverkettungsschicht erfüllt, kann in Hardware durch eine integrierte Spezialschaltung erzeugt werden, selbst wenn die integrierte Schaltung eine Tiefenverkettungsoperation nicht direkt in Hardware ausführen kann. Durch Erzeugen der zufriedenstellenden Ausgabe in Hardware auf der integrierten Schaltung kann die Verarbeitung einer Inferenz für ein neuronales Netz, das eine Tiefenverkettungsschicht enthält, ausgeführt werden, ohne Daten zurück zu dem Host zu geben, d. h. ohne Ausführen eines Teils der Berechnung außerhalb des Chips, auch wenn die integrierte Schaltung die Tiefenverkettungsoperation nicht direkt unterstützt. Mit anderen Worten finden alle Berechnungen, die sich auf das Berechnen der Ausgabe der Tiefenverkettungsschicht beziehen, auf der integrierten Spezialschaltung statt. Insbesondere ist die integrierte Schaltung durch Ausführen von Matrixmultiplikationen auf Tiefenvektoren aus den zwei Eingabetensoren unter Verwendung von Verschiebematrizen wie in dieser Anmeldung beschrieben fähig, die Ausgabe der Tiefenverkettungsschicht in Hardware Chip-intern auszuführen. Das erlaubt es, dass das Verarbeiten einer Inferenz für ein solches neuronales Netz effizient ausgeführt werden kann, ohne die Hardware-Architektur der integrierten Schaltung zu modifizieren. Insbesondere kann das System eine Inferenz eines neuronalen Netzes effizient verarbeiten, ohne Tiefenverkettungs-Hardware zu der Spezialschaltung hinzuzufügen oder ohne Verschiebungsunterstützung zu der Vektoreinheit der Spezialschaltung hinzuzufügen. Das heißt, das Verarbeiten von Verzögerungen aufgrund dessen, dass ein Teil der Berechnung außerhalb des Chips, in Software oder beidem ausgeführt werden muss, wird vermieden.
  • Die Einzelheiten einer oder mehrerer Ausführungsformen des Gegenstands dieser Anmeldung sind in den begleitenden Zeichnungen und der nachstehenden Beschreibung dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich.
  • Figurenliste
    • 1 zeigt ein beispielhaftes Verarbeitungssystem eines neuronalen Netzes.
    • 2 zeigt eine beispielhafte integrierte Spezialschaltung.
    • 3 ist ein Ablaufplan eines Beispielprozesses zum Erzeugen von Anweisungen, die bewirken, dass eine integrierte Spezialschaltung einen Ausgabetensor für eine Tiefenverkettungsschicht erzeugt.
    • 4 ist ein Ablaufplan eines Beispielprozesses zum Verketten von zwei Tensoren entlang der Tiefendimension.
    • 5 ist ein Ablaufplan eines weiteren Beispielprozesses zum Verketten von zwei Tensoren entlang der Tiefendimension.
    • 6 ist ein Ablaufplan noch eines weiteren Beispielprozesses zum Verketten von zwei Tensoren entlang der Tiefendimension.
    • 7 zeigt ein Beispiel einer Tiefenverkettungsberechnung, die eine einzelne Verschiebematrix erfordert.
    • 8 zeigt ein Beispiel einer Tiefenverkettungsberechnung, die zwei Verschiebematrizen erfordert.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 zeigt ein beispielhaftes Verarbeitungssystem 100 eines neuronalen Netzes.
  • Das Verarbeitungssystem 100 des neuronalen Netzes ist ein Beispiel eines Systems, das als ein oder mehrere Computer an einem oder mehreren Orten implementiert ist, in denen Systeme, Komponenten und Techniken, die nachstehend beschrieben sind, implementiert sein können.
  • Das Verarbeitungssystem 100 des neuronalen Netzes ist ein System, das Berechnungen des neuronalen Netzes unter Verwendung einer integrierten Spezialschaltung 110 ausführt. Die integrierte Schaltung 110 ist eine integrierte Spezialschaltung zum Ausführen von Berechnungen des neuronalen Netzes und enthält eine Matrixberechnungseinheit 120, die Vektor-Matrix-Multiplikationen in Hardware ausführt. Ein Beispiel einer solchen integrierten Spezialschaltung ist nachstehend mit Bezug auf 2 genauer beschrieben.
  • Insbesondere empfängt das Verarbeitungssystem 100 des neuronalen Netzes Anforderungen, neuronale Netze auf der integrierten Spezialschaltung 110 zu implementieren, implementiert die neuronalen Netze auf der integrierten Spezialschaltung 110, und verarbeitet, sobald ein gegebenes neuronales Netz implementiert ist, Eingaben in das neuronale Netz unter Verwendung der integrierten Spezialschaltung 110, um Inferenzen des neuronalen Netzes zu erzeugen.
  • Das heißt, das Verarbeitungssystem 100 des neuronalen Netzes kann eine Anforderung empfangen, die eine Architektur eines neuronalen Netzes für ein neuronales Netz spezifiziert, das verwendet werden soll, um Eingaben zu verarbeiten. Die Architektur des neuronalen Netzes definiert die Anzahl und Konfiguration von Schichten in dem neuronalen Netz und Werte der Parameter für jede aus den Schichten, die Parameter besitzt.
  • Um ein neuronales Netz auf der integrierten Spezialschaltung 110 zu implementieren, enthält das Verarbeitungssystem 100 des neuronalen Netzes eine Implementierungs-Engine 150 des neuronalen Netzes, die als ein oder mehrere Computerprogramme auf einem oder mehreren Computern an einem oder mehreren physikalischen Orten implementiert ist.
  • Die Implementierungs-Engine 150 des neuronalen Netzes erzeugt Anweisungen, die dann, wenn sie durch die integrierte Schaltung 110 ausgeführt werden, bewirken, dass die integrierte Schaltung 110 die Operationen ausführt, die durch das neuronale Netz spezifiziert sind, um eine Ausgabe des neuronalen Netzes aus einer empfangenen Eingabe des neuronalen Netzes zu erzeugen.
  • Sobald die Anweisungen durch die Implementierungs-Engine 150 des neuronalen Netzes erzeugt und für die integrierte Schaltung 110 bereitgestellt worden sind, kann das Verarbeitungssystem 100 des neuronalen Netzes Eingaben für das neuronale Netz empfangen und kann die Eingaben für das neuronale Netz unter Verwendung des neuralen Netzes durch Bewirken, dass die integrierte Schaltung 110 die erzeugten Anweisungen ausführt, verarbeiten.
  • Einige neuronale Netze enthalten jedoch eine oder mehrere inkompatible Schichten des neuronalen Netzes. Der Begriff inkompatible Schicht des neuronalen Netzes, wie er in dieser Anmeldung verwendet ist, bezieht sich auf eine Schicht des neuronalen Netzes, die eine Operation spezifiziert, die durch die integrierte Schaltung 110 nicht direkt in Hardware ausgeführt werden kann. Um diese neuronalen Netze auf der integrierten Schaltung zu implementieren, erzeugt die Implementierungs-Engine 150 des neuronalen Netzes Anweisungen, die dann, wenn sie durch die integrierte Schaltung 110 ausgeführt werden, bewirken, dass die integrierte Schaltung 110 eine Ausgabe für die inkompatible Schicht des neuronalen Netzes erzeugt durch Ausführen von Operationen in Hardware, die von denjenigen, die durch die Schicht des neuronalen Netzes spezifiziert sind, verschieden sind, jedoch zu einer Schichtausgabe führen, die erzeugt wird, die die Spezifikation der inkompatiblen Schicht neuronalen Netzes erfüllt, d. h. einer Schichtausgabe, die die gleiche ist wie eine Ausgabe, die durch direktes Ausführen der durch die Schicht spezifizierten Operationen erzeugt worden wäre.
  • Insbesondere enthalten einige neuronale Netze eine Tiefenverkettungsschicht. Eine Tiefenverkettungsschicht ist eine Schicht, die als Eingabe zwei oder mehr Tensoren empfängt, d. h. zwei oder mehr mehrdimensionale Matrizen, die die Ausgaben anderer Schichten in dem neuronalen Netz sind, und die Eingabetensoren entlang der Tiefendimension verkettet. Insbesondere weist jeder Eingabetensor zwei räumliche Dimensionen x und y und eine Tiefendimension z auf. Durch Verketten von zwei Eingabetensoren, von denen einer die Dimensionen x1 mal y1 mal z1 aufweist und der andere die Dimensionen x1 mal y1 mal z2 aufweist, entlang der Tiefendimension z erzeugt die Tiefenverkettungsschicht einen Ausgabetensor, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist. Der Ausgabetensor kann dann als eine Eingabe durch eine weitere Schicht des neuronalen Netzes verwendet werden.
  • Beispiele für neuronale Netze, die auf einer integrierten Schaltung 110 implementiert sein können und die eine oder mehrere Tiefenverkettungsschichten enthalten, sind neuronale Netze zur Bilderkennung, die in „lnception-v4, Inception-ResNet and the Impact of Residual Connections on Learning“ von Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke beschrieben sind, erhältlich bei https-//static.googleusercontent.com/media/research.google.com/en//pubs/archive/45169.pdf.
  • Andere Beispiele für neuronale Netze, die Tiefenverkettungsschichten enthalten, sind neuronale Netze für langes Kurzzeitgedächtnis (LSTM), wie diejenigen, die in „Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling“ von Hasim Sak, Andrew Senior, Francoise Beaufays beschrieben sind, erhältlich bei http://193.6.4.39/~czap/letoltes/is14/is2014/pdf/author/is141304.pdf.
  • Weil die Haupt-Hardware-Einheit, die Matrixoperationen auf der integrierten Schaltung 110 ausführt, die Matrixberechnungseinheit 120 ist, kann die integrierte Schaltung eine Tiefenverkettungsoperation nicht direkt in Hardware ausführen.
  • Um ein neuronales Netz, das eine Tiefenverkettungsschicht enthält, auf der integrierten Schaltung 110 zu implementieren, erzeugt die Implementierungs-Engine 150 des neuronalen Netzes Anweisungen, die dann, wenn sie durch die integrierte Schaltung 110 während der Verarbeitung einer Eingabe in das neuronale Netz durch das neuronale Netz ausgeführt werden, bewirken, dass die integrierte Schaltung 110 andere Operationen in Hardware ausführt, um einen Ausgabetensor, der die Spezifikation der Tiefenverkettungsschicht des neuronalen Netzes erfüllt, unter Verwendung der Matrixberechnungseinheit 120 zu erzeugen. Diese Anweisungen und andere Operationen sind nachstehend mit Bezug auf die 3-8 genauer beschrieben.
  • Obwohl diese Anmeldung eine Schaltung, die verwendet wird, um ein neurales Netz auszuführen, als eine integrierte Spezialschaltung beschreibt, können die in dieser Anmeldung beschriebenen Techniken auf irgendeiner Schaltung ausgeführt werden, z. B. einer FPGA, einer ASIC, einer GPU und so weiter, die mit einer Matrixberechnungseinheit ergänzt ist.
  • 2 zeigt eine beispielhafte integrierte Spezialschaltung 200 zum Ausführen von Berechnungen eines neuronalen Netzes.
  • Die integrierte Schaltung 200 enthält eine Host-Schnittstelle 202. Die Host-Schnittstelle 202 kann Anweisungen empfangen, die Parameter für eine Berechnung des neuronalen Netzes enthalten. Die Parameter können wenigstens eines oder mehrere aus dem Folgenden enthalten: wie viele Schichten verarbeitet werden sollten, Daten, die die entsprechenden Mengen gewichteter Eingaben für jede Schicht identifizieren, eine Anfangsmenge von Aktivierungseingaben, d. h. die Eingabe für das neuronale Netz, aus der die Inferenz berechnet werden soll, entsprechende Eingabe- und Ausgabegrößen jeder Schicht, und so weiter. Wenn das neuronale Netz, das verarbeitet wird, eine Tiefenverkettungsschicht enthält, enthalten die Parameter eine oder mehrere Verschiebegewichtsmatrizen für die Tiefenverkettungsschicht und eine oder mehrere modifizierte Einheitsgewichtsmatrizen für die Tiefenverkettungsschicht. Verschiebegewichtsmatrizen und modifizierte Einheitsgewichtsmatrizen sind nachstehend mit Bezug auf die 3-5 genauer beschrieben.
  • Die Host-Schnittstelle 202 kann die Anweisungen zu einem Sequenzer 206 senden, der die Anweisungen in Steuersignale niedriger Ebene umsetzt, die die Schaltung steuern, um die Berechnungen des neuronalen Netzes auszuführen. In einigen Implementierungen regulieren die Steuersignale den Datenfluss in der Schaltung 200, z. B. wie die Mengen von Gewichtseingaben und die Mengen von Aktivierungseingaben durch die Schaltung 200 fließen. Der Sequenzer 206 kann die Steuersignale zu einem Einheitspuffer 208, einer Matrixmultiplikationseinheit 212 und einer Vektorberechnungseinheit 214 senden. In einigen Implementierungen sendet der Sequenzer 206 die Steuersignale auch zu einer Speicherdirektzugriffs-Engine 204 und einem dynamischen Speicher 210.
  • Die Host-Schnittstelle 202 kann die Mengen von Gewichtseingaben und die Anfangsmenge von Aktivierungseingaben zu der Speicherdirektzugriffs-Engine 204 senden. Die Speicherdirektzugriffs-Engine 204 kann die Mengen von Aktivierungseingaben in dem Einheitspuffer 208 speichern.
  • In einigen Implementierungen speichert die Speicherdirektzugriffs-Engine 204 die Mengen von Gewichten in dem dynamischen Speicher 210, der eine Speichereinheit sein kann. In einigen Implementierungen befindet sich der dynamische Speicher außerhalb der Schaltung. Wenn das neuronale Netz, das verarbeitet wird, eine Tiefenverkettungsschicht enthält, speichert die Speicherdirektzugriffs-Engine 204 die eine oder mehreren Verschiebegewichtsmatrizen für die Tiefenverkettungsschicht und in einigen Implementierungen die modifizierte Einheitsgewichtsmatrix für die Tiefenverkettungsschicht in dem dynamischen Speicher 210.
  • Der Einheitspuffer 208 ist ein Speicherpuffer. Er kann verwendet werden, um die Menge von Aktivierungseingaben aus der Speicherdirektzugriffs-Engine 204 und Ausgaben der Vektorberechnungseinheit 214 zu speichern. Die Speicherdirektzugriffs-Engine 204 kann außerdem die Ausgaben der Vektorberechnungseinheit 214 aus dem Einheitspuffer 208 lesen.
  • Wenn sie angewiesen werden, das zu tun, können der dynamische Speicher 210 und der Einheitspuffer 208 die Mengen der Gewichtseingaben bzw. die Mengen der Aktivierungseingaben zu der Matrixmultiplikationseinheit 212 senden.
  • Allgemein kann die Matrixmultiplikationseinheit 212 irgendeine Einheit sein, die Multiplikation eines Vektors mit einer Matrix in Hardware ausführt. In einigen Implementierungen ist die Matrixmultiplikationseinheit 212 ein zweidimensionales systolisches Array. In diesem Fall kann die Matrixmultiplikationseinheit 212 mehrere Vektor-Matrix-Multiplikationen parallel ausführen oder Matrix-Matrix-Multiplikationen ausführen. Die Matrixmultiplikationseinheit 212 kann auch ein eindimensionales systolisches Array oder eine andere Schaltungsanordnung sein, die mathematische Operationen, z. B. Multiplikation und Addition, ausführen kann.
  • Die Matrixmultiplikationseinheit 212 kann die Gewichtseingaben und die Aktivierungseingaben verarbeiten und einen Vektor aus Ausgaben für die Vektorberechnungseinheit 214 bereitstellen. In einigen Fällen sendet die Matrixmultiplikationseinheit 212 den Vektor aus Ausgaben zu dem Einheitspuffer 208, der den Vektor aus Ausgaben zu der Vektorberechnungseinheit 214 oder zurück zu der Matrixmultiplikationseinheit 212 sendet, falls die aktuelle Schicht des neuronalen Netzes keine Aktivierungsfunktion anwendet. Beispielsweise kann, sobald die tiefenverkettete Ausgabe einer Tiefenverkettungsschicht erzeugt worden ist, die Matrixmultiplikationseinheit 212 die Ausgabe zu dem Einheitspuffer 208 anstatt zu der Vektorberechnungseinheit 214 senden, weil die Tiefenverkettungsschicht keine Aktivierungsfunktion anwendet. In einigen anderen Fällen sendet die Matrixmultiplikationseinheit 212, obwohl die Tiefenverkettungsschicht keine Aktivierungsfunktion anwendet, die Ausgabe zu der Vektorberechnungseinheit 214, die eine Einheitsaktivierungsfunktion auf die Ausgabe anwendet, d. h. die Ausgabe nicht modifiziert, bevor sie die Ausgabe zurück zu dem Einheitspuffer 208 leitet.
  • Die Vektorberechnungseinheit 214 kann den Vektor aus Ausgaben verarbeiten und einen Vektor aus verarbeiteten Ausgaben in dem Einheitspuffer 208 speichern. Beispielsweise kann die Vektorberechnungseinheit 214 eine nichtlineare Funktion auf Ausgaben der Matrixberechnungseinheit anwenden, z. B. einen Vektor aus akkumulierten Werte, um aktivierte Werte zu erzeugen. In einigen Implementierungen erzeugt die Vektorberechnungseinheit 214 normalisierte Werte, Pool-Werte oder beides. Der Vektor aus verarbeiteten Ausgaben kann als Aktivierungseingaben für die Matrixmultiplikationseinheit 212 verwendet werden, z. B. zur Verwendung in einer nachfolgenden Schicht in dem neuronalen Netz.
  • Die integrierte Schaltung 200 und insbesondere eine Beispielimplementierung der Matrixmultiplikationseinheit 212, die es ermöglicht, dass die Matrixmultiplikationseinheit 212 Vektor-Matrix-Multiplikation in Hardware ausführt, ist in der US-Patentschrift Nr. 14/844,524 mit dem Titel „Neural Network Processor,“ eingereicht am 3. September 2015, genauer beschrieben, deren vollständiger Inhalt hier durch Bezugnahme vollständig mit aufgenommen ist.
  • 3 ist ein Ablaufplan eines Beispielprozesses 300 zum Erzeugen von Anweisungen, die bewirken, dass eine integrierte Spezialschaltung einen Ausgabetensor für eine Tiefenverkettungsschicht erzeugt. Zur Vereinfachung wird der Prozess 300 so beschrieben, dass er durch ein System aus einem oder mehreren Computern ausgeführt wird, die sich an einem oder mehreren Orten befinden und die in Übereinstimmung mit dieser Spezifikation geeignet programmiert sind. Beispielsweise kann ein Verarbeitungssystem eines neuronalen Netzes, z. B. das Verarbeitungssystem 100 des neuronalen Netzes von 1, das geeignet programmiert ist, den Prozess 300 ausführen.
  • Das System empfängt eine Anforderung, ein neuronales Netz auf einer integrierten Spezialschaltung zu implementieren, d. h. Eingaben für das neuronale Netz unter Verwendung der integrierten Spezialschaltung zu verarbeiten, um Ausgaben zu erzeugen (Schritt 302).
  • Insbesondere enthält das neuronale Netz, das auf der integrierten Schaltung implementiert werden soll, eine Tiefenverkettungsschicht, die eine Verkettung von zwei Tensoren entlang der Tiefendimension spezifiziert. Beispielsweise kann die Tiefenverkettungsschicht eine Verkettung entlang der Tiefendimension eines ersten Eingabetensors, der die Dimensionen x1 mal y1 mal z1 aufweist, und eines zweiten Eingabetensors, der die Dimensionen x1 mal y1 mal z2 aufweist, spezifizieren, um einen Ausgabetensor, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist, zu erzeugen.
  • Das System erzeugt eine oder mehrere Verschiebegewichtsmatrizen zur Verwendung bei der Ausführung der Verkettung, die durch die Tiefenverkettungsschicht spezifiziert ist (Schritt 304).
  • Eine Verschiebematrix ist eine Matrix, die dann, wenn sie mit einem Eingabevektor multipliziert wird, einen Ausgabevektor erzeugt, in dem die Position eines oder mehrerer der Einträge des Eingabevektors verschoben ist, während ein oder mehrere andere Einträge des Eingabevektors durch Nullen ersetzt worden sind. Allgemein sind Verschiebematrizen, die in dieser Anmeldung beschrieben sind, Matrizen zur Verwendung als die Matrizen auf der rechten Seite einer Matrixmultiplikationsoperation, um Werte von Eingabevektoren zu gewünschten Positionen in einem Ausgabevektor zu verlagern. In einigen anderen Implementierungen können jedoch anders konstruierte Verschiebematrizen als die Matrizen auf der linken Seite der Matrixmultiplikationsoperation verwendet werden, um die gleichen Ergebnisse zu erreichen.
  • Insbesondere, weil die Matrixberechnungseinheit der integrierten Schaltung Matrixmultiplikation in Hardware ausführt, weist die Matrixberechnungseinheit eine maximale Vektorlänge (max) auf. Die maximale Vektorlänge ist die maximale Länge eines Vektors, der mit einer Matrix durch die Matrixberechnungseinheit in einem Durchgang multipliziert werden kann, d. h. ohne Aufteilen des Vektors in mehrere Eingaben für die Matrixberechnungseinheit. Beispielsweise falls die Matrixberechnungseinheit ein eindimensionales oder zweidimensionales systolisches Array ist, ist die maximale Vektorlänge gleich der Anzahl von Spalten in der Einheit oder der Anzahl von Zeilen in der Einheit.
  • Für Tensoren, die eine Tiefe von kleiner oder gleich max aufweisen, speichert das System den Tensor als eine Sammlung entsprechender Tiefenvektoren, die die Länge max aufweisen, für jeden räumlichen Ort in dem Eingabetensor.
  • Ein räumlicher Ort ist ein Paar von (x,y)-Raumkoordinaten, d. h. so dass alle Einträge an allen Tiefendimensionen die die gleichen x-Raumkoordinaten gemeinsam verwenden, in einem Tensor an demselben räumlichen Ort sind. Der Tiefenvektor für einen gegebenen räumlichen Ort ist ein Vektor, der alle Einträge in dem Tensor enthält, die an dem gegebenen räumlichen Ort sind. Falls der Tensor eine Tiefe z kleiner als max aufweist, werden die letzten max - z Einträge jedes Tiefenvektors mit Nullen oder sinnlosen Werten, d. h. Werten, die für andere Zwecke verwendet werden können, jedoch für die Tiefenverkettungsoperation nicht relevant sind und sie nicht beeinflussen sollten, aufgefüllt.
  • Für Tensoren, die eine Tiefe größer als max aufweisen, repräsentiert das System jeden Tiefenvektor als mehrere Vektoren der Länge max. Jeder dieser Vektoren der Länge max, der einen Teil eines Tiefenvektors bildet, wird in dieser Anmeldung als ein Teilvektor bezeichnet.
  • Für einen gegebenen räumlichen Ort in einem Tensor, der eine Tiefe z aufweist, ist der Tiefenvektor für den Ort als ceiling(z/max) Teilvektoren repräsentiert, wobei ceiling(x) die kleinste Ganzzahl größer als oder gleich x ist. Die ersten floor(z/max) Teilvektoren, wobei floor(x) die größte Ganzzahl kleiner als oder gleich x ist, speichern jeweils Werte aus den entsprechenden Dimensionen in dem Tiefenvektor für den räumlichen Ort, d. h. wobei der erste Teilvektor die Einträge an dem räumlichen Ort in den ersten max Tiefendimensionen speichert, der zweite Teilvektor die Einträge an dem räumlichen Ort in den zweiten max Tiefendimensionen speichert, und so weiter. Die ersten floor(z/max) * max Einträge des letzten Teilvektors sind die Einträge an den letzten floor(z/max) * max Tiefendimensionen, und irgendwelche verbleibenden Einträge werden mit Nullen oder sinnlosen Werten aufgefüllt.
  • In einigen Fällen wird die Anzahl der Tiefendimensionen (z1 + z2) des Ausgabetensors die maximale Vektorlänge nicht übersteigen, und die Tiefenvektoren der Ausgabetensoren sind einzelne Teilvektoren. In diesen Fällen erzeugt das System eine einzige Verschiebegewichtsmatrix für die Tiefenverkettungsoperation.
  • Falls die Anzahl von Tiefendimensionen des Ausgabetensors die maximale Vektorlänge übersteigt und die Tiefenvektoren durch mehrere Teilvektoren repräsentiert werden, kann es möglich sein, dass das System mehr als eine Verschiebegewichtsmatrix für die Tiefenverkettungsoperation erzeugen muss.
  • Das System erzeugt außerdem eine oder mehrere modifizierte Einheitsgewichtsmatrizen für die Tiefenverkettungsschicht. Eine modifizierte Einheitsgewichtsmatrix ist eine Matrix, die Einsen entlang eines Abschnitts der Hauptdiagonale und Nullen für alle anderen Einträge aufweist.
  • Im Allgemeinen ist eine Verschiebematrix, die Einträge, die an der j-ten Position eines Eingabevektors starten, zum Starten an der i-ten Position des Eingabevektors verschiebt, eine max-mal- max-Matrix, die überall Nullen aufweist außer an einer diagonalen Reihe von Einsen, die an dem j-ten Wert der i-ten Spalte der Matrix startet.
  • Verschiebematrizen und modifizierte Einheitsgewichtsmatrizen werden nachstehend mit Bezug auf die 4-8 genauer beschrieben.
  • Das System speichert die eine oder mehreren Verschiebegewichtsmatrizen und die eine oder mehreren modifizierten Einheitsgewichtsmatrizen für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist (Schritt 306). Beispielsweise kann das System die erzeugte/n Matrix oder Matrizen zu einer Host-Schnittstelle der integrierten Spezialschaltung zum Speichern in einem dynamischen Speicher, der für die Schaltung zugänglich ist, senden.
  • Das System erzeugt Anweisungen, die dann, wenn sie durch die integrierte Schaltung während der Verarbeitung einer Eingabe für das neuronale Netz durch das neuronale Netz ausgeführt werden, bewirken, dass die integrierte Schaltung einen Ausgabetensor, der die Spezifikation der Tiefenverkettungsschicht des neuronalen Netzes erfüllt, unter Verwendung der erzeugten Matrizen erzeugt (Schritt 308). Insbesondere erzeugt das System Anweisungen, die dann, wenn sie ausgeführt werden, bewirken, dass die integrierte Schaltung die Prozesse 400, 500 oder 600, die nachstehend mit Bezug auf die entsprechenden 4-6 beschrieben sind, ausführt.
  • 4 ist ein Ablaufplan eines weiteren Beispielprozesses 400 zum Verketten von zwei Eingabevektoren. Der Prozess 400 wird in Hardware durch eine integrierte Spezialschaltung ausgeführt, die eine Hardware-Matrixberechnungseinheit enthält, z. B. die integrierte Spezialschaltung 110 von 1.
  • Die integrierte Schaltung empfängt zwei Eingaben, die verkettet werden sollen (Schritt 402). Jede Eingabe ist ein Tiefenvektor an einem gegebenen räumlichen Ort aus einem entsprechenden Tensor, der tiefenverkettet werden soll, und jede Eingabe besteht aus einem oder mehreren Teilvektoren der Größe max. Das heißt, eine Eingabe ist der Tiefenvektor an dem räumlichen Ort aus einem Eingabetensor, und die andere Eingabe ist der Tiefenvektor an dem räumlichen Ort aus dem anderen Eingabetensor.
  • Ein einigen Fällen, d. h. wenn die Anzahl von Tiefendimensionen in einem oder beiden Tensoren kein Vielfaches von max ist, enthält der letzte Teilvektor für jeden räumlichen Ort in einem oder beiden Tensoren aufgefüllte Werte, d. h. Nullen oder sinnlose Werte, die dem Teilvektor hinzugefügt worden sind, jedoch nicht Teil des Eingabetensors sind. Die Einträge in einem Teilvektor, die nicht die aufgefüllten Werte sind, werden als nicht aufgefüllte Einträge bezeichnet.
  • Die integrierte Schaltung identifiziert, z. B. basierend auf einem Steuersignal, den Teilvektor in der ersten oder zweiten Eingabe, der der erste Teilvektor ist, der als Teil der Tiefenverkettung modifiziert werden muss (als „der erste modifizierte Teilvektor“ bezeichnet) (Schritt 404). Der erste Teilvektor, der modifiziert werden muss, ist der erste Teilvektor, der einen oder mehrere aufgefüllte Einträge enthält.
  • Für jeden Teilvektor vor dem ersten Teilvektor, der modifiziert werden muss, verlagert die integrierte Schaltung den Teilvektor unmodifiziert in die Ausgabe der Matrixberechnungseinheit und verlagert dann die Teilvektoren aus der Ausgabe als Ausgabeteilvektoren der Verkettungsoperation (Schritt 406). Das Verlagern von Vektoren in die Ausgabe der Matrixberechnungseinheit wird nachstehend mit Bezug auf die 5-8 beschrieben.
  • Die integrierte Schaltung verlagert die nicht aufgefüllten Einträge des ersten Teilvektors, der modifiziert werden muss, in die Ausgabe der Matrixberechnungseinheit (Schritt 408).
  • Das heißt, die integrierte Schaltung multipliziert den ersten modifizierten Teilvektor mit einer modifizierten Einheitsmatrix, um einen Teilvektor, der die nicht aufgefüllten Einträge des ersten Teilvektors und Nullen für die verbleibenden Einträge aufweist, in die Ausgabe der Matrixberechnungseinheit zu verlagern. Das Multiplizieren von Vektoren mit partiellen Einheitsmatrizen wird nachstehend mit Bezug auf die 5-8 beschrieben.
  • Die integrierte Schaltung verlagert unter Verwendung einer geeigneten Verschiebematrix einen verschobenen Teilvektor in die Ausgabe, um den verschobenen Teilvektor und den Teilvektor, der derzeit in der Ausgabe ist, aufzusummieren, und verlagert dann die Summe der Teilvektoren aus der Ausgabe als einen Ausgabeteilvektor der Verkettungsoperation (Schritt 410).
  • Für die erste Iteration von Schritt 410, die während einer Tiefenverkettung ausgeführt wird, ist der Teilvektor, der derzeit in der Ausgabe ist, der erste Teilvektor, der modifiziert werden muss.
  • Der verschobene Teilvektor ist ein Teilvektor, der Nullen als seine ersten (max - n) Einträge und die ersten n Einträge des nächsten Teilvektors als seine verbleibenden Einträge aufweist, wobei n die Anzahl aufgefüllter Einträge in dem Teilvektor ist, der derzeit in der Ausgabe ist, und der nächste Teilvektor der nächste Teilvektor ist, der bearbeitet werden soll, wenn die Teilvektoren in den Eingaben in einer Folge angeordnet sind, die an dem ersten Teilvektor in der ersten Eingabe startet und mit dem letzten Teilvektor in der zweiten Eingabe endet.
  • Das Erzeugen verschobener Teilvektoren unter Verwendung von Verschiebematrizen und Summieren von Vektoren ist nachstehend mit Bezug auf die 5-8 genauer beschrieben.
  • Die integrierte Schaltung verlagert einen weiteren verschobenen Teilvektor unter Verwendung einer weiteren geeigneten Verschiebematrix in die Ausgabe (Schritt 412).
  • Der andere verschobene Teilvektor ist ein Teilvektor, der irgendwelche zusätzlichen nicht aufgefüllten Einträge in dem nächsten Teilvektor als seine ersten Einträge und aufgefüllte Einträge als seine verbleibenden Einträge aufweist.
  • Die integrierte Schaltung fährt mit dem Ausführen der Schritte 410 und 412 fort, bis keine verbleibenden Teilvektoren vorhanden sind, d. h. bis danach, wenn alle Eingabeteilvektoren bearbeitet worden sind.
  • Das System kann den Prozess 400 für jeden räumlichen Ort in den Eingabetensoren ausführen, um die zwei Eingabetensoren tiefenzuverketten.
  • 5 ist ein Ablaufplan eines weiteren Beispielprozesses 500 zum Verketten von zwei Tensoren entlang der Tiefendimension. Der Prozess 500 wird in Hardware durch eine integrierte Spezialschaltung, die eine Hardware-Matrixberechnungseinheit enthält, z. B. die integrierte Spezialschaltung 110 von 1, ausgeführt.
  • Insbesondere ist der Prozess 500 ein Beispiel für einen Prozess, der ausgeführt werden soll, um zwei Tensoren zu verketten, wenn der verkettete Tensor eine Anzahl von Tiefendimensionen aufweist, die die maximale Vektorlänge der Matrixberechnungseinheit nicht übersteigt, d. h. jeder Ausgabetiefenvektor kann als ein einziger Teil gespeichert werden.
  • Die integrierte Schaltung greift auf eine Verschiebegewichtsmatrix für die Tiefenverkettung (Schritt 502) aus einem für die integrierte Schaltung zugänglichen Speicher, z. B. aus dem dynamischen Speicher 210 von 2, zu. In einigen Implementierungen greift die integrierte Schaltung auch auf eine modifizierte Einheitsgewichtsmatrix für die Tiefenverkettung aus dem Speicher zu.
  • Die integrierte Schaltung verlagert einen ersten Tiefenvektor für einen gegebenen räumlichen Ort in dem ersten Eingabetensor in die Ausgabe der Matrixberechnungseinheit (Schritt 504). Der erste Tiefenvektor für den gegebenen räumlichen Ort ist ein Vektor, der alle Einträge in dem ersten Eingabetensor, die an dem gegebenen räumlichen Ort sind, enthält, und weist aufgefüllte Werte als irgendwelche verbleibenden Werte des ersten Tiefenvektors auf.
  • Beispielsweise kann die integrierte Schaltung jeden Eintrag des ersten Tiefenvektors zu einem entsprechenden Aufsummierungsregister einer Gruppe von Registern verlagern, die die Ausgaben der Multiplikationen speichert, die durch die Matrixberechnungseinheit ausgeführt werden.
  • Um den ersten Tiefenvektor in die Ausgabe zu verlagern, kann die integrierte Schaltung den ersten Tiefenvektor mit einer modifizierten Einheitsgewichtsmatrix für die Tiefenverkettung unter Verwendung der Matrixberechnungseinheit multiplizieren, was dazu führt, dass der erste Tiefenvektor in der Ausgabe der Matrixberechnungseinheit gespeichert wird. Die modifizierte Einheitsgewichtsmatrix ist eine max-x-max-Matrix, die überall Nullen aufweist außer dass sie Einsen in den ersten z1 Einträgen der Hauptdiagonalen aufweist.
  • Die integrierte Schaltung multipliziert einen zweiten Tiefenvektor für den gegebenen räumlichen Ort in dem zweiten Eingabetensor mit der Verschiebegewichtsmatrix für die Tiefenverkettung (Schritt 506), um einen verschobenen zweiten Tiefenvektor zu erzeugen. Der zweite Tiefenvektor für den gegebenen räumlichen Ort ist ein Vektor, der alle Einträge in dem zweiten Eingabetensor, die an dem gegebenen räumlichen Ort sind, enthält, und weist aufgefüllte Werte als irgendwelche verbleibenden Werte des zweiten Tiefenvektors auf.
  • Aufgrund der Struktur der Verschiebegewichtsmatrix ist der resultierende verschobene zweite Tiefenvektor ein Vektor, der max Einträge aufweist, wobei die ersten z1 Einträge null sind, die nächsten z2 Einträge die Einträge des zweiten Tiefenvektors für den räumlichen Ort sind und irgendwelche verbleibenden Einträge null sind.
  • Die integrierte Schaltung summiert den ersten Tiefenvektor und den verschobenen zweiten Tiefenvektor, um einen verketteten Tiefenvektor zu erzeugen (Schritt 508). Beispielsweise kann das System jeden Eintrag des zweiten Tiefenvektors zu dem entsprechenden Eintrag des ersten Tiefenvektors addieren durch Verlagern des Eintrags des zweiten Tiefenvektors in das Aufsummierungsregister, das den entsprechenden Eintrag des ersten Tiefenvektors speichert.
  • Die integrierte Schaltung kann die Schritte 504-508 für jeden räumlichen Ort in den Eingabetensoren ausführen, um die Ausgabe der Tiefenverkettungsschicht zu erzeugen.
  • 6 ist ein Ablaufplan eines weiteren Beispielprozesses 600 zum Verketten von zwei Tensoren entlang der Tiefendimension. Der Prozess 600 wird in Hardware durch eine integrierte Spezialschaltung, die eine Hardware-Matrixberechnungseinheit enthält, z. B. die integrierte Spezialschaltung 110 von 1, ausgeführt.
  • Insbesondere ist der Prozess 600 ein Beispiel eines Prozesses, der ausgeführt werden soll, um zwei Tensoren zu verketten, wenn der erste Tensor eine Anzahl von Tiefendimensionen aufweist, die kleiner ist als die maximale Vektorlänge der Matrixberechnungseinheit, der verkettete Tensor jedoch eine Anzahl von Tiefendimensionen aufweist, die die maximale Vektorlänge übersteigt. Das heißt, der erste Tiefenvektor ist der erste Teilvektor, der in dem Prozess 400 von 4 modifiziert werden muss.
  • Die integrierte Schaltung greift auf Verschiebegewichtsmatrizen für die Tiefenverkettung (Schritt 602) aus einem für die integrierte Schaltung zugänglichen Speicher, z. B. aus dem Einheitspuffer 208 von 2, zu. In einigen Implementierungen greift die integrierte Schaltung auch auf eine modifizierte Einheitsgewichtsmatrix für die Tiefenverkettung aus dem Speicher zu.
  • Die integrierte Schaltung verlagert einen ersten Tiefenvektor für einen gegebenen räumlichen Ort in dem ersten Eingabetensor in die Ausgabe der Matrixberechnungseinheit (Schritt 604). In diesem Beispiel ist der erste Tiefenvektor ein Vektor, der max Einträge aufweist, wobei die ersten z1 Einträge die Einträge des ersten Tiefenvektors für den räumlichen Ort sind und die verbleibenden Einträge Nullen sind.
  • Beispielsweise kann die integrierte Schaltung jeden Eintrag des ersten Tiefenvektors zu einem entsprechenden Aufummierungsregister aus einer Gruppe von Registern verlagert, das die Ausgaben von Multiplikationen speichert, die durch die Matrixberechnungseinheit durch Multiplizieren des ersten Tiefenvektors mit einer modifizierten Einheitsgewichtsmatrix, die die Dimensionen (max) mal (max) aufweist und die Nullen entlang der Hauptdiagonalen bis einschließlich dem z1-ten Eintrag der z1-ten Spalte enthält.
  • Die integrierte Schaltung multipliziert den ersten Teilvektor des zweiten Tiefenvektors für den gegebenen räumlichen Ort in dem zweiten Eingabetensor mit der ersten Verschiebematrix für eine Tiefenverkettung (Schritt 606), um einen ersten partiell verschobenen Teil zu erzeugen.
  • Aufgrund der Struktur der ersten Verschiebematrix ist der erste partiell verschobene Tiefenvektor für einen gegebenen räumlichen Ort ein Vektor, der (max) Einträge aufweist, wobei die ersten z1 Einträge null sind und die nächsten (max - z1) Einträge die ersten (max - z1) Einträge des ersten Teilvektors des zweiten Tiefenvektors für den räumlichen Ort sind.
  • Die integrierte Schaltung summiert den ersten Tiefenvektor und den ersten partiell verschobenen Tiefenvektor, um einen verketteten Zwischentiefenvektor zu erzeugen (Schritt 608). Beispielsweise kann das System jeden Eintrag des ersten partiell verschobenen Tiefenvektors zu dem entsprechenden Eintrag des ersten Tiefenvektors addieren durch Verlagern des Eintrags des ersten partiell verschobenen Tiefenvektors in das Aufsummierungsregister, das den entsprechenden Eintrag des ersten Tiefenvektors speichert. Der verkettete Zwischentiefenvektor ist ein Vektor, der (max) Einträge aufweist, wobei die ersten z1 Einträge die Einträge des ersten Tiefenvektors sind und die nächsten (max - z1) Einträge die ersten (max - z1) Einträge des zweiten Tiefenvektors für den räumlichen Ort sind.
  • Die integrierte Schaltung multipliziert den Tiefenvektor für den gegebenen räumlichen Ort in dem zweiten Eingabetensor mit der zweiten Verschiebematrix für die Tiefenverkettung (Schritt 610), um einen zweiten partiell verschobenen Tiefenvektor zu erzeugen.
  • Aufgrund der Struktur der zweiten Verschiebematrix ist der zweite partiell verschobene Tiefenvektor für einen gegebenen räumlichen Ort ein Vektor, der (max) Einträge aufweist, wobei die ersten (z1 + z2 - max) Einträge die letzten (z1 + z2 - max) des zweiten Tiefenvektors für einen räumlichen Ort sind und die verbleibenden Einträge null oder sinnlose Werte sind.
  • Die integrierte Schaltung speichert den zweiten partiell verschobenen Tiefenvektor und den verketteten Zwischentiefenvektor als eine Repräsentation des verketteten Tiefenvektors für den räumlichen Ort (Schritt 612). Beispielsweise kann die integrierte Schaltung den zweiten partiell verschobenen Tiefenvektor und den verketteten Zwischentiefenvektor in vorbestimmten Orten in dem Einheitspuffer speichern, die in den Anweisungen als Orte identifiziert sind, an denen die zwei Vektoren, die den verketteten Tiefenvektor für den räumlichen Ort repräsentieren, gespeichert werden sollen.
  • Die integrierte Schaltung kann den Prozess 600 für jeden räumlichen Ort in den Eingabetensoren ausführen, um die Ausgabe der Tiefenverkettungsschicht zu erzeugen.
  • 7 zeigt ein Beispiel einer Tiefenverkettungsberechnung 700, die eine einzelne Verschiebematrix erfordert.
  • In dem vereinfachten Beispiel von 7 soll ein erster Eingabetensor, der die Dimensionen 3 × 3 × 3 aufweist, mit einem zweiten Eingabetensor, der die Dimensionen 3 × 3 × 4 aufweist, verkettet werden, um einen 3 × 3 × 7-Ausgabetensor zu erzeugen, und die maximale Vektorlänge, die in einem Durchgang durch die Matrixberechnungseinheit verarbeitet werden kann, ist acht, so dass die Tiefe des verketteten Ausgabetensors kleiner ist als die maximale Vektorlänge.
  • In Teil (a) der Berechnung arbeitet die integrierte Schaltung auf einem ersten Tiefenvektor aus dem ersten Tensor und einem entsprechenden zweiten Tiefenvektor aus dem zweiten Tensor. Insbesondere weist der erste Tiefenvektor an seinen ersten 3 Einträgen die 3 Einträge an einem gegebenen räumlichen Ort in dem ersten Eingabetensor und Nullen an seinen verbleibenden Einträgen auf, während der zweite Tiefenvektor an seinen ersten 4 Einträgen die 4 Einträge an dem gegebenen räumlichen Ort in dem zweiten Eingabetensor und Nullen an seinen verbleibenden Einträgen aufweist.
  • In dem Beispiel von 7 sind der erste Tiefenvektor und der zweite Tiefenvektor mit Nullen aufgefüllt worden, in anderen Beispielen können jedoch stattdessen einer der oder beide Tiefenvektoren mit sinnlosen Daten aufgefüllt sein.
  • Um Teil (a) der Berechnung auszuführen, multipliziert die integrierte Schaltung den ersten Tiefenvektor mit einer modifizierten Einheitsgewichtsmatrix unter Verwendung der Matrixberechnungseinheit, um eine weitere Instanz des ersten Tiefenvektors in der Ausgabe der Matrixberechnungseinheit zu erzeugen, d. h. den ersten Tiefenvektor in die Ausgabe zu verlagern. In dem Beispiel von 7 weist die modifizierte Einheitsmatrix 1-en entlang den ersten drei Einträgen der Hauptdiagonalen und Nullen für die letzten vier Einträge der Hauptdiagonalen auf. Weil jedoch die Tiefenvektoren mit Nullen anstatt mit unsinnigen Werten aufgefüllt sind, kann die modifizierte Einheitsgewichtsmatrix stattdessen andere Werte für die letzten vier Einträge der Hauptdiagonalen und für andere Einträge, die nur mit den aufgefüllten Einträgen des ersten Tiefenvektors während der Multiplikation multipliziert werden, aufweisen.
  • Die integrierte Schaltung multipliziert dann den zweiten Tiefenvektor mit einer Verschiebematrix, um einen verschobenen Tiefenvektor zu erzeugen. Die Verschiebematrix ist eine 7 × 7-Matrix, die Einträge aufweist, die alle null sind außer einer diagonalen Reihe von Einsen, die an dem ersten Eintrag der vierten Spalte startet und an dem vierten Eintrag der siebten Spalte endet. Aufgrund dessen, dass er mit der Verschiebematrix multipliziert ist, weist der verschobene Tiefenvektor Nullen an seinen ersten 3 Einträgen und die 4 Einträge des zweiten Tiefenvektors als seine folgenden 4 Einträge auf. Wie für die modifizierte Einheitsmatrix kann, weil die Tiefenvektoren mit Nullen anstatt mit sinnlosen Werten aufgefüllt sind, die Verschiebematrix stattdessen andere Werte als 0 für Einträge aufweisen, die nur mit den aufgefüllten Einträgen des zweiten Tiefenvektors während der Multiplikation multipliziert werden.
  • In Teil (b) der Berechnung addiert die integrierte Schaltung den ersten Tiefenvektor und den verschobenen zweiten Tiefenvektor, d. h. durch Verlagern des verschobenen zweiten Tiefenvektors in die Ausgabe während der erste Tiefenvektor in der Ausgabe ist, um einen verketteten Tiefenvektor zu erzeugen, der die Einträge des ersten Tiefenvektors als seine ersten 3 Einträge und die Einträge des zweiten Tiefenvektors als seine letzten 4 Einträge aufweist.
  • Die Integrierte kann die Beispielberechnung für jeden räumlichen Ort in den Eingabetensoren ausführen, um einen entsprechenden verketteten Tiefenvektor für jeden räumlichen Ort zu erzeugen.
  • 8 zeigt ein Beispiel einer Tiefenverkettungsberechnung 800, die zwei Verschiebematrizen erfordert.
  • In dem vereinfachten Beispiel von 8 soll ein erster Eingabetensor, der die Dimensionen 3 × 3 × 3 aufweist, mit einem zweiten Eingabetensor, der die Dimensionen 3 × 3 × 4 aufweist, verkettet werden, um einen 3 × 3 × 7-Ausgabetensor zu erzeugen, die maximale Vektorlänge, die in einem Durchgang durch die Matrixberechnungseinheit verarbeitet werden kann, ist jedoch 5, so dass die Tiefe des tiefenverketteten Ausgabetensors größer ist als die maximale Vektorlänge.
  • In den Teilen (a) und (c) der Berechnung arbeitet die integrierte Schaltung auf einem ersten Tiefenvektor aus dem ersten Eingabetensor und zwei Instanzen eines entsprechenden zweiten Tiefenvektors aus dem zweiten Eingabetensor. Insbesondere weist der erste Tiefenvektor an seinen ersten 3 Einträgen die 3 Einträge an einem gegebenen räumlichen Ort in dem ersten Eingabetensor und Nullen an seinen verbleibenden Einträgen auf, während der zweite Tiefenvektor an seinen ersten 4 Einträgen die 4 Einträge an dem gegebenen räumlichen Ort in dem zweiten Eingabetensor und eine Null an seinen verbleibenden Eintrag aufweist. In dem Beispiel von 8 sind der erste Tiefenvektor und der zweite Tiefenvektor mit Nullen aufgefüllt worden, jedoch in anderen Beispielen können stattdessen einige der oder alle Tiefenvektoren mit sinnlosen Daten aufgefüllt sein.
  • Um Teil (a) der Berechnung auszuführen, multipliziert die integrierte Schaltung den ersten Tiefenvektor mit einer modifizierten Einheitsgewichtsmatrix unter Verwendung der Matrixberechnungseinheit, um eine weitere Instanz des ersten Tiefenvektors in der Ausgabe der Matrixberechnungseinheit zu erzeugen, d. h. den ersten Tiefenvektor in die Ausgabe zu verlagern.
  • Die integrierte Schaltung multipliziert dann den zweiten Tiefenvektor mit einer ersten Verschiebematrix, um einen ersten partiell verschobenen Tiefenvektor zu erzeugen. Die erste Verschiebematrix ist eine 5 × 5-Matrix, die Einträge aufweist, die alle null sind außer einer diagonalen Reihe von Einsen, die an dem ersten Eintrag der vierten Spalte startet und an dem zweiten Eintrag der fünften Spalte endet. Aufgrund dessen, dass er mit der Verschiebematrix multipliziert ist, weist der erste partiell verschobene Tiefenvektor Nullen an seinen ersten 3 Einträgen und die ersten 2 Einträge des zweiten Tiefenvektors als die folgenden 2 Einträge auf.
  • Um Teil (b) der Berechnung auszuführen, addiert die integrierte Schaltung dann den ersten Tiefenvektor und den ersten partiell verschobenen Tiefenvektor, d. h. durch Verlagern des ersten partiell verschobenen Tiefenvektors in die Ausgabe während der erste Tiefenvektor in der Ausgabe ist, um den ersten Teil des Ausgabetiefenvektors zu erzeugen, der als seine ersten 3 Einträge die Einträge des ersten Tiefenvektors und als seine letzten 2 Einträge die ersten 2 Einträge des zweiten Tiefenvektors aufweist.
  • Um Teil (c) der Berechnung auszuführen, d. h. den zweiten Teil des Ausgabetiefenvektors zu erzeugen, multipliziert die integrierte Schaltung den zweiten Tiefenvektor mit einer zweiten Verschiebematrix, um einen zweiten partiell verschobenen Tiefenvektor zu erzeugen. Die zweite Verschiebematrix ist eine 5 × 5-Matrix, die Einträge aufweist, die alle null sind außer einer diagonalen Reihe von Einsen, die an dem vierten Eintrag der ersten Spalte startet und an dem fünften Eintrag der zweiten Spalte endet. Aufgrund dessen, dass er mit der Verschiebematrix multipliziert ist, weist der zweite partiell verschobene Tiefenvektor die letzten zwei Einträge des zweiten Tiefenvektors als seine ersten zwei Einträge und Nullen als die verbleibenden Einträge auf.
  • Um Teil (d) der Berechnung auszuführen, speichert die integrierte Schaltung den erste Teilvektor und den zweiten Teilvektor als eine Repräsentation des verketteten Tiefenvektors für den räumlichen Ort, z. B. durch Speichern der zwei Vektoren in vorbestimmten Orten in dem Einheitspuffer, die in den Anweisungen als Orte identifiziert sind, an denen die zwei Vektoren, die den verketteten Tiefenvektor für den räumlichen Ort repräsentieren, gespeichert werden sollen.
  • Die integrierte Schaltung kann die Beispielberechnung für jeden räumlichen Ort in den Eingabetensoren ausführen, um einen entsprechenden verketteten Tiefenvektor für jeden räumlichen Ort zu erzeugen.
  • Ausführungsformen des Gegenstands und der funktionalen Operationen, die in dieser Anmeldung beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung oder in materiell ausgeführter Computer-Software oder Firmware, in Computer-Hardware, die die Strukturen, die in dieser Anmeldung offenbart sind, und ihre strukturellen Äquivalente enthalten, oder in Kombinationen aus einem oder mehreren daraus implementiert sein. Ausführungsformen des Gegenstands, der in dieser Anmeldung beschrieben ist, können als ein oder mehrere Computerprogramme implementiert sein, d. h. ein oder mehrere Module aus Computerprogrammanweisungen, die auf einem materiellen nicht-transitorischen Speichermedium zur Ausführung durch eine oder zur Steuerung des Betriebs einer Datenverarbeitungseinrichtung codiert sind. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung für Direktzugriff oder seriellen Zugriff oder eine Kombination aus einem oder mehreren daraus sein. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten verbreiteten Signal codiert sein, z. B. einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal, das erzeugt wird, um Informationen zur Übertragung zu geeigneten Empfängereinrichtungen zur Ausführung durch eine Datenverarbeitungseinrichtung zu codieren.
  • Der Begriff „Datenverarbeitungseinrichtung“ bezieht sich auf Datenverarbeitungs-Hardware und umfasst alle Arten von Einrichtungen, Vorrichtungen und Maschinen zur Verarbeitung von Daten, die als Beispiel einen programmierbaren Prozessor, einen Computer oder mehrere Prozessoren oder Computer enthalten. Die Einrichtung kann außerdem Spezial-Logikschaltungsanordnung, z. B. ein FGPA (feldprogrammierbares Gatterfeld) oder eine ASIC (anwendungsspezifische integrierte Schaltung), sein oder ferner enthalten. Die Einrichtung kann optional zusätzlich zu Hardware Code enthalten, der eine Ausführungsumgebung für Computerprogramme erzeugt, z. B. Code, der Prozessor-Firmware, einen Protokollstack, ein Datenbankmanagementsystem, ein Betriebssystem oder eine Kombination aus einem oder mehreren davon bildet.
  • Ein Computerprogramm, das auch als ein Programm, Software, eine Software-Anwendung, eine App, ein Modul, ein Software-Modul, ein Skript oder Code bezeichnet oder beschrieben sein kann, kann in irgendeiner Form einer Programmiersprache geschrieben sein, die kompilierte oder interpretierte Sprachen oder deklarative oder prozedurale Sprachen enthält; und es kann in irgendeiner Form verteilt sein, die als ein eigenständiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder eine andere Einheit enthält, die zum Gebrauch in einer Berechnungsumgebung geeignet ist. Ein Programm kann, muss jedoch nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei, die andere Programme oder Daten enthält, z. B. ein oder mehrere Skripte, die in einem Auszeichnungssprachen-Dokument gespeichert sind, in einer einzelnen Datei, die für das fragliche Programm dediziert ist, oder in mehreren koordinierten Dateien, z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Code-Abschnitte speichern, gespeichert sein. Ein Computerprogramm kann verteilt werden, um auf einem Computer oder auf mehreren Computern, die sich an einem Standort oder verteilt über mehrere Standorte befinden und durch ein Datenkommunikationsnetz miteinander verbunden sind, ausgeführt zu werden.
  • Die Prozesse und Logikabläufe, die in dieser Anmeldung beschrieben sind, können durch einen oder mehrere programmierbare Computer ausgeführt werden, die ein oder mehrere Computerprogramme ablaufen lassen, um Funktionen durch Arbeiten auf Eingabedaten und Erzeugen einer Ausgabe auszuführen. Die Prozesse und Logikabläufe können auch durch eine Spezial-Logikschaltungsanordnung, z. B. ein FPGA oder eine ASIC, oder durch eine Kombination aus einer Spezial-Logikschaltungsanordnung und einem oder mehreren programmierten Computern ausgeführt werden.
  • Computer, die für die Ausführung eines Computerprogramms geeignet sind, können auf Allzweck- oder Spezial-Mikroprozessoren oder beiden oder irgendeiner anderen Art von zentraler Verarbeitungseinheit basieren. Allgemein wird eine zentrale Verarbeitungseinheit Anweisungen und Daten aus einem Festwertspeicher oder einem Direktzugriffsspeicher oder beiden empfangen. Die wesentlichen Elemente eines Computers sind eine zentrale Verarbeitungseinheit zum Ausführen oder Durchführen von Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Die zentrale Verarbeitungseinheit und der Speicher können durch eine Spezial-Logikschaltungsanordnung ergänzt oder darin integriert sein. Allgemein wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magneto-optische Platten oder optische Platten, enthalten oder betriebstechnisch damit gekoppelt sein, um Daten von ihnen zu empfangen, zu ihnen zu übertragen oder beides. Ein Computer muss jedoch solche Vorrichtungen nicht aufweisen. Außerdem kann ein Computer in eine weitere Vorrichtung eingebettet sein, z. B. in ein Mobiltelefon, einen persönlichen digitalen Assistenten (PDA), ein mobiles Audio- oder Videoabspielgerät, eine Spielkonsole, einen Empfänger des globalen Positionierungssystems (GPS-Empfänger) oder eine tragbare Speichervorrichtung, z. B. ein Flashlaufwerk über den universellen seriellen Bus (USB-Flashlaufwerk), um nur einige wenige zu nennen.
  • Computerlesbare Medien, die zum Speichern von Computerprogrammanweisungen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Speicher, Medien und Speichervorrichtungen, die als Beispiel Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD ROM und DVD-ROM-Platten enthalten.
  • Um die Interaktion für einen Anwender bereitzustellen, können Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands auf einem Computer implementiert sein, der eine Anzeigevorrichtung, z. B. einen CRT- (Kathodenstrahlröhren-) oder LCD-Monitor (Flüssigkristallanzeige-Monitor) zum Anzeigen von Informationen für den Anwender und eine Tastatur und eine Zeigevorrichtung, z. B. eine Maus oder einen Trackball, durch die der Anwender Eingaben für den Computer bereitstellen kann, aufweist. Andere Arten von Vorrichtungen können verwendet werden, um ebenfalls Interaktion mit Anwender einem bereitzustellen; beispielsweise kann eine für den Anwender bereitgestellte Rückmeldung irgendeine Form sensorischer Rückmeldung sein, z. B. visuelle Rückmeldung, hörbare Rückmeldung oder tastbare Rückmeldung; und eine Eingabe von dem Anwender kann in irgendeiner Form empfangen werden, die akustische, Sprach- oder tastbare Eingabe enthält. Zusätzlich kann ein Computer mit einem Anwender interagieren durch Senden von Dokumenten zu einer Vorrichtung und Empfangen von Dokumenten von einer Vorrichtung, die durch den Anwender verwendet wird; beispielsweise durch Senden von Web-Seiten zu einem Web-Browser auf einer Vorrichtung eines Anwenders in Reaktion auf Anforderungen, die von dem Web-Browser empfangen werden. Außerdem kann ein Computer mit einem Anwender durch Senden von Textnachrichten oder andere Formen einer Nachricht zu einer persönlichen Vorrichtung, z. B. einem Smartphone, auf dem eine Nachrichtenübermittlungsanwendung läuft, und Empfangen von Antwortnachrichten von dem Anwender zur Erwiderung interagieren.
  • Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands können in einem Computersystem implementiert sein, das eine Backend-Komponente, z. B. als ein Daten-Server, enthält oder das eine Middleware-Komponente, z. B. einen Anwendungsserver, enthält, oder das eine Frontend-Komponente, z. B. einen Client-Computer, enthält, der eine grafische Anwenderschnittstelle, einen Web-Browser oder eine App aufweist, durch die ein Anwender mit einer Implementierung des in dieser Anmeldung beschriebenen Gegenstands interagieren kann, oder irgendeine Kombination eines oder mehrerer solcher Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch irgendeine Form oder irgendein Medium zur digitalen Datenkommunikation, z. B. ein Kommunikationsnetz, miteinander verbunden sein. Beispiele für Kommunikationsnetze enthalten ein lokales Netz (LAN) und ein Weitbereichsnetz (WAN), z. B. das Internet.
  • Das Berechnungssystem kann Clients und Server enthalten. Ein Client und ein Server sind im Allgemeinen voneinander entfernt und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung von Client und Server entsteht aufgrund der Computerprogramme, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung miteinander aufweisen. In einigen Ausführungsformen sendet ein Server Daten, z. B. eine HTML-Seite, zu einer Anwendervorrichtung, z. B. zum Zweck der Anzeige der Daten für einen Anwender und Empfangen von Anwendereingabe von einem Anwender, der mit der Vorrichtung, die als ein Client arbeitet, interagiert. Daten, die in der Anwendervorrichtung erzeugt werden, z. B. ein Ergebnis einer Anwenderinteraktion, können in dem Server von der Vorrichtung empfangen werden.
  • Obwohl diese Anmeldung viele spezifische Implementierungseinzelheiten beinhaltet, sollten diese nicht als Einschränkungen für den Schutzbereich irgendeiner Erfindung oder den Schutzbereich dessen, das beansprucht sein kann, gedeutet werden, sondern vielmehr als Beschreibungen der Merkmale, die für spezielle Ausführungsformen der speziellen Erfindungen spezifisch sein können. Spezielle Merkmale, die in dieser Anmeldung im Kontext getrennter Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert sein. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzigen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Unterkombination implementiert sein. Außerdem können, obwohl Merkmale vorstehend als in speziellen Kombinationen arbeitend beschrieben sein und anfangs sogar als solche beansprucht sind, ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen sein, und die beanspruchte Kombination kann sich auf eine Unterkombination oder eine Variation einer Unterkombination richten.
  • Ähnlich sollte, obwohl Operationen in den Zeichnungen in einer speziellen Reihenfolge abgebildet sind, das nicht so verstanden werden, dass es erforderlich ist, dass solche Operationen in der speziellen gezeigten Reihenfolge oder in sequenzieller Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um wünschenswerte Ergebnisse zu erreichen. Unter speziellen Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Außerdem sollte die Trennung verschiedener Systemmodule und Komponenten in den vorstehend beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen gemeinsam in einem einzigen Software-Produkt integriert oder in mehrere Software-Produkte paketiert sein können.
  • Weitere Beispiele enthalten Verfahren, Systeme und Einrichtungen, die Computerprogramme enthalten, die auf Computerspeichermedien codiert sind, zur Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit, wobei eines der Verfahren enthält: Empfangen einer Anforderung, Netzeingaben für ein neuronales Netz unter Verwendung einer integrierten Schaltung zu verarbeiten, wobei das neuronale Netz eine Tiefenverkettungsschicht des neuronalen Netzes umfasst; und Erzeugen von Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung Operationen ausführt, die umfassen: für jeden räumlichen Ort in einem ersten Eingabetensor für die Tiefenverkettungsschicht und einem zweiten Eingabetensor für die Tiefenverkettungsschicht: Multiplizieren unter Verwendung der Matrixberechnungseinheit eines zweiten Tiefenvektors für den räumlichen Ort mit einer Verschiebegewichtsmatrix für die Tiefenverkettungsschicht, um einen verschobenen zweiten Tiefenvektor zu erzeugen; und Addieren des verschobenen zweiten Tiefenvektors und eines ersten Eingabetiefenvektors für den räumlichen Ort, um einen verketteten Tiefenvektor zu erzeugen.
  • Spezielle Ausführungsformen des Gegenstands sind beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzbereichs der folgenden Ansprüche. Beispielsweise können die Aktionen, die in den Ansprüchen vorgetragen sind, in einer anderen Reihenfolge ausgeführt werden und immer noch wünschenswerte Ergebnisse erreichen. Als ein Beispiel erfordern die in den begleitenden Figuren abgebildeten Prozesse nicht notwendigerweise die spezielle gezeigte Reihenfolge oder sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erreichen. In einigen Fällen können Multitasking und Parallelverarbeitung vorteilhaft sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 14844524 [0033]

Claims (20)

  1. Verfahren, das Folgendes umfasst: Empfangen einer Anforderung zum Verarbeiten von Netzeingaben für ein neuronales Netz unter Verwendung einer integrierten Schaltung, die Berechnungen des neuronales Netzes in Hardware unter Verwendung einer Matrixberechnungseinheit ausführt, wobei das neuronale Netz eine Tiefenverkettungsschicht des neuronalen Netzes umfasst, die eine Verkettung eines Eingabetensors, der die Dimensionen x1 mal y1 mal z1 aufweist, und eines Eingabetensors, der die Dimensionen x1 mal y1 mal z2 aufweist, entlang einer Tiefendimension, um einen Ausgabetensor zu erzeugen, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist, spezifiziert; und Erzeugen von Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung während des Verarbeitens einer Netzeingabe durch das neuronale Netz einen Schichtausgabetensor, der die Spezifikation der Tiefenverkettungsschicht des neuronalen Netzes erfüllt, durch Ausführen von Operationen erzeugt, die umfassen: für jeden räumlichen Ort in einem ersten Eingabetensor für die Tiefenverkettungsschicht und einen zweiten Eingabetensor für die Tiefenverkettungsschicht: Multiplizieren unter Verwendung der Matrixberechnungseinheit eines zweiten Tiefenvektors für den räumlichen Ort in dem zweiten Eingabetensor mit einer Verschiebegewichtsmatrix für die Tiefenverkettungsschicht, um einen verschobenen zweiten Tiefenvektor zu erzeugen, der Nullen als die ersten z1 Einträge und Einträge des zweiten Tiefenvektors als die letzten z2 Einträge aufweist; und Addieren des verschobenen zweiten Tiefenvektors und eines ersten Eingabetiefenvektors für den räumlichen Ort in dem ersten Eingabetensor, um einen verketteten Tiefenvektor zu erzeugen, wobei der erste Eingabetiefenvektor Einträge des ersten Eingabetiefenvektors als die ersten z1 Einträge des ersten Eingabetiefenvektors und Nullen als die letzten z2 Einträge des ersten Eingabetiefenvektors aufweist.
  2. Verfahren nach Anspruch 1, wobei die Operationen ferner umfassen: Verlagern des ersten Eingabetiefenvektors in eine Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit; und wobei das Addieren des verschobenen zweiten Tiefenvektors und des ersten Eingabetiefenvektors umfasst: Verlagern des verschobenen zweiten Tiefenvektors in die Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit, während der erste Eingabetiefenvektor in der Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit gespeichert ist.
  3. Verfahren nach Anspruch 2, wobei das Verlagern des ersten Eingabetiefenvektors umfasst: Multiplizieren des ersten Eingabetiefenvektors mit einer modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht unter Verwendung der Matrixberechnungseinheit.
  4. Verfahren nach Anspruch 3, das ferner umfasst: Erzeugen der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, das ferner umfasst: Erzeugen der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  6. Verfahren nach Anspruch 5, das ferner umfasst: Bestimmen, dass die Anzahl von Tiefendimensionen in dem Ausgabetensor eine maximale Vektorlänge für die Matrixberechnungseinheit nicht übersteigt; und Erzeugen der Verschiebegewichtsmatrix für die Tiefenverkettung in Reaktion auf das Bestimmen, dass die Anzahl von Tiefendimensionen in dem Ausgabetensor die maximale Vektorlänge für die Matrixberechnungseinheit nicht übersteigt.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei die Verschiebegewichtsmatrix für die Tiefenverkettungsschicht eine (z1 + z2) mal (z1 + z2)-Matrix ist, in der alle Einträge null sind außer einer Diagonalreihe von Einsen, die an dem ersten Eintrag der z2-ten Spalte der Matrix startet.
  8. System, das einen oder mehrere Computer und eine oder mehrere Speichervorrichtungen umfasst, die erste Anweisungen speichern, die dann, wenn sie durch den einen oder die mehreren Computer ausgeführt werden, bewirken, dass der eine oder die mehreren Computer erste Operationen ausführen, die umfassen: Empfangen einer Anforderung zum Verarbeiten von Netzeingaben für ein neuronales Netz unter Verwendung einer integrierten Schaltung, die Berechnungen des neuronalen Netzes in Hardware unter Verwendung einer Matrixberechnungseinheit ausführt, wobei das neuronale Netz eine Tiefenverkettungsschicht des neuronalen Netzes umfasst, die eine Verkettung eines Eingabetensors, der die Dimensionen x1 mal y1 mal z1 aufweist, und eines Eingabetensors, der die Dimensionen x1 mal y1 mal z2 aufweist, entlang einer Tiefendimension, um einen Ausgabetensor zu erzeugen, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist, spezifiziert; und Erzeugen von zweiten Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung während des Verarbeitens einer Netzeingabe durch das neuronale Netz einen Schichtausgabetensor, der die Spezifikation der Tiefenverkettungsschicht des neuronalen Netzes erfüllt, durch Ausführen von zweiten Operationen erzeugt, die umfassen: für jeden räumlichen Ort in einem ersten Eingabetensor für die Tiefenverkettungsschicht und einen zweiten Eingabetensor für die Tiefenverkettungsschicht: Multiplizieren unter Verwendung der Matrixberechnungseinheit eines zweiten Tiefenvektors für den räumlichen Ort in dem zweiten Eingabetensor mit einer Verschiebegewichtsmatrix für die Tiefenverkettungsschicht, um einen verschobenen zweiten Tiefenvektor zu erzeugen, der Nullen als die ersten z1 Einträge gefolgt von Einträgen des zweiten Tiefenvektors aufweist; und Addieren des verschobenen zweiten Tiefenvektors und eines ersten Eingabetiefenvektors für den räumlichen Ort in dem ersten Eingabetensor, um einen verketteten Tiefenvektor zu erzeugen, wobei der erste Eingabetiefenvektor Einträge des ersten Eingabetiefenvektors als die ersten z1 Einträge des ersten Eingabetiefenvektors aufweist.
  9. System nach Anspruch 8, wobei die zweiten Operationen ferner umfassen: Verlagern des ersten Eingabetiefenvektors in eine Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit; und wobei das Addieren des verschobenen zweiten Tiefenvektors und des ersten Eingabetiefenvektors umfasst: Verlagern des verschobenen zweiten Tiefenvektors in die Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit, während der erste Eingabetiefenvektor in der Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit gespeichert ist.
  10. System nach Anspruch 9, wobei das Verlagern des ersten Eingabetiefenvektors umfasst: Multiplizieren des ersten Eingabetiefenvektors mit einer modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht unter Verwendung der Matrixberechnungseinheit.
  11. System nach Anspruch 10, wobei die ersten Operationen ferner umfassen: Erzeugen der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  12. System nach einem der Ansprüche 8 bis 11, wobei die ersten Operationen ferner umfassen: Erzeugen der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  13. System nach Anspruch 12, wobei die ersten Operationen ferner umfassen: Bestimmen, dass die Anzahl von Tiefendimensionen in dem Ausgabetensor eine maximale Vektorlänge für die Matrixberechnungseinheit nicht übersteigt; und Erzeugen der Verschiebegewichtsmatrix für die Tiefenverkettung in Reaktion auf das Bestimmen, dass die Anzahl von Tiefendimensionen in dem Ausgabetensor die maximale Vektorlänge für die Matrixberechnungseinheit nicht übersteigt.
  14. System nach einem der Ansprüche 8 bis 13, wobei die Verschiebegewichtsmatrix für die Tiefenverkettungsschicht eine Matrix ist, in der alle Einträge null sind außer einer Diagonalreihe von Einsen, die an dem ersten Eintrag der z2-ten Spalte der Matrix startet.
  15. Ein oder mehrere Computerspeichermedien, die mit ersten Anweisungen codiert sind, die dann, wenn sie durch einen oder mehrere Computer ausgeführt werden, bewirken, dass der eine oder die mehreren Computer erste Operationen ausführen, die umfassen: Empfangen einer Anforderung zum Verarbeiten von Netzeingaben für ein neuronales Netz unter Verwendung einer integrierten Schaltung, die Berechnungen des neuronales Netzes in Hardware unter Verwendung einer Matrixberechnungseinheit ausführt, wobei das neuronale Netz eine Tiefenverkettungsschicht des neuronalen Netzes umfasst, die eine Verkettung eines Eingabetensors, der die Dimensionen x1 mal y1 mal z1 aufweist, und eines Eingabetensors, der die Dimensionen x1 mal y1 mal z2 aufweist, entlang einer Tiefendimension, um einen Ausgabetensor zu erzeugen, der die Dimensionen x1 mal y1 mal (z1 + z2) aufweist, spezifiziert; und Erzeugen von zweiten Anweisungen, die dann, wenn sie durch die integrierte Schaltung ausgeführt werden, bewirken, dass die integrierte Schaltung während des Verarbeitens einer Netzeingabe durch das neuronale Netz einen Schichtausgabetensor, der die Spezifikation der Tiefenverkettungsschicht des neuronalen Netzes erfüllt, durch Ausführen von zweiten Operationen erzeugt, die umfassen: für jeden räumlichen Ort in einem ersten Eingabetensor für die Tiefenverkettungsschicht und einen zweiten Eingabetensor für die Tiefenverkettungsschicht: Multiplizieren unter Verwendung der Matrixberechnungseinheit eines zweiten Tiefenvektors für den räumlichen Ort in dem zweiten Eingabetensor mit einer Verschiebegewichtsmatrix für die Tiefenverkettungsschicht, um einen verschobenen zweiten Tiefenvektor zu erzeugen, der Nullen als die ersten z1 Einträge gefolgt von Einträgen des zweiten Tiefenvektors aufweist; und Addieren des verschobenen zweiten Tiefenvektors und eines ersten Eingabetiefenvektors für den räumlichen Ort in dem ersten Eingabetensor, um einen verketteten Tiefenvektor zu erzeugen, wobei der erste Eingabetiefenvektor Einträge des ersten Eingabetiefenvektors als die ersten z1 Einträge des ersten Eingabetiefenvektors aufweist.
  16. Computerspeichermedien nach Anspruch 15, wobei die zweiten Operationen ferner umfassen: Verlagern des ersten Eingabetiefenvektors in eine Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit; und wobei das Addieren des verschobenen zweiten Tiefenvektors und des ersten Eingabetiefenvektors umfasst: Verlagern des verschobenen zweiten Tiefenvektors in die Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit, während der erste Eingabetiefenvektor in der Gruppe von Ausgabeaufsummierungsregistern der Matrixberechnungseinheit gespeichert ist.
  17. Computerspeichermedien nach Anspruch 16, wobei das Verlagern des ersten Eingabetiefenvektors umfasst: Multiplizieren des ersten Eingabetiefenvektors mit einer modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht unter Verwendung der Matrixberechnungseinheit.
  18. Computerspeichermedien nach Anspruch 17, wobei die ersten Operationen ferner umfassen: Erzeugen der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der modifizierten Einheitsgewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  19. Computerspeichermedien nach einem der Ansprüche 15 bis 18, wobei die ersten Operationen ferner umfassen: Erzeugen der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht; und Speichern der Verschiebegewichtsmatrix für die Tiefenverkettungsschicht in einem Speicher, der für die integrierte Spezialschaltung zugänglich ist.
  20. Computerspeichermedien nach einem der Ansprüche 15 bis 19, wobei die Verschiebegewichtsmatrix für die Tiefenverkettungsschicht eine Matrix ist, in der alle Einträge null sind außer einer Diagonalreihe von Einsen, die an dem ersten Eintrag der z2-ten Spalte der Matrix startet.
DE102018105198.0A 2017-03-07 2018-03-07 Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit Pending DE102018105198A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/452,624 US9691019B1 (en) 2017-03-07 2017-03-07 Depth concatenation using a matrix computation unit
US15/452,624 2017-03-07
US15/624,629 2017-06-15
US15/624,629 US10896367B2 (en) 2017-03-07 2017-06-15 Depth concatenation using a matrix computation unit

Publications (1)

Publication Number Publication Date
DE102018105198A1 true DE102018105198A1 (de) 2018-09-13

Family

ID=61873899

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202018101275.4U Active DE202018101275U1 (de) 2017-03-07 2018-03-07 Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit
DE102018105198.0A Pending DE102018105198A1 (de) 2017-03-07 2018-03-07 Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202018101275.4U Active DE202018101275U1 (de) 2017-03-07 2018-03-07 Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit

Country Status (9)

Country Link
US (3) US10896367B2 (de)
EP (2) EP3373209B1 (de)
CN (1) CN108572940B (de)
DE (2) DE202018101275U1 (de)
DK (1) DK3373209T3 (de)
FI (1) FI3373209T3 (de)
GB (1) GB2562826A (de)
TW (2) TWI686711B (de)
WO (1) WO2018165209A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896367B2 (en) 2017-03-07 2021-01-19 Google Llc Depth concatenation using a matrix computation unit
US11144316B1 (en) 2018-04-17 2021-10-12 Ali Tasdighi Far Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning
US10867399B2 (en) 2018-12-02 2020-12-15 Himax Technologies Limited Image processing circuit for convolutional neural network
TWI694413B (zh) * 2018-12-12 2020-05-21 奇景光電股份有限公司 影像處理電路
CN110033091B (zh) 2018-12-13 2020-09-01 阿里巴巴集团控股有限公司 一种基于模型进行预测的方法和装置
JP6832329B2 (ja) * 2018-12-18 2021-02-24 富士通株式会社 データ構造
US11928582B1 (en) * 2018-12-31 2024-03-12 Cadence Design Systems, Inc. System, media, and method for deep learning
US11507642B2 (en) * 2019-05-02 2022-11-22 Silicon Storage Technology, Inc. Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network
US11537939B2 (en) * 2019-05-03 2022-12-27 Google Llc Reshape and broadcast optimizations to avoid unnecessary data movement
JP2020205003A (ja) * 2019-06-19 2020-12-24 キオクシア株式会社 メモリシステム、メモリコントローラ、及び半導体記憶装置
US10915298B1 (en) 2019-10-08 2021-02-09 Ali Tasdighi Far Current mode multiply-accumulate for compute in memory binarized neural networks
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11314674B2 (en) * 2020-02-14 2022-04-26 Google Llc Direct memory access architecture with multi-level multi-striding
US20220147808A1 (en) * 2020-11-06 2022-05-12 Micron Technology, Inc. Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network
US20220374689A1 (en) * 2021-05-11 2022-11-24 Xinlin LI Methods and systems for computing an output of a neural network layer
US20220405598A1 (en) * 2021-06-17 2022-12-22 International Business Machines Corporation Concatenated input/output tensors for use in recurrent neural networks

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682441A (en) 1995-11-08 1997-10-28 Storm Technology, Inc. Method and format for storing and selectively retrieving image data
TW305998B (en) 1996-06-14 1997-05-21 Ind Tech Res Inst Weighted sum type of artificial neural network with reconfigurable structure and bit-serial I/O mode
US6240485B1 (en) * 1998-05-11 2001-05-29 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system
US6889293B1 (en) 2000-06-09 2005-05-03 Agere Systems Inc. Directory-based prediction methods and apparatus for shared-memory multiprocessor systems
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US8269727B2 (en) 2007-01-03 2012-09-18 Apple Inc. Irregular input identification
TW201034441A (en) 2009-03-13 2010-09-16 Chunghwa Picture Tubes Ltd Method of establishing the depth of filed data for three-dimensional (3D) image and a system thereof
US9489176B2 (en) * 2011-09-15 2016-11-08 Exxonmobil Upstream Research Company Optimized matrix and vector operations in instruction limited algorithms that perform EOS calculations
JP5780089B2 (ja) 2011-09-28 2015-09-16 富士通株式会社 計算方法、計算プログラムおよび計算装置
WO2013086384A1 (en) * 2011-12-08 2013-06-13 Oracle International Corporation Techniques for maintaining column vectors of relational data within volatile memory
US9292787B2 (en) * 2012-08-29 2016-03-22 Microsoft Technology Licensing, Llc Computer-implemented deep tensor neural network
US20140181171A1 (en) * 2012-12-24 2014-06-26 Pavel Dourbal Method and system for fast tensor-vector multiplication
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
US9384168B2 (en) 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US9715642B2 (en) 2014-08-29 2017-07-25 Google Inc. Processing images using deep neural networks
US9524461B1 (en) 2014-09-30 2016-12-20 Steven T. Huynh Conceptual computation system using a hierarchical network of modules
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US20160350652A1 (en) 2015-05-29 2016-12-01 North Carolina State University Determining edit operations for normalizing electronic communications using a neural network
US10410119B2 (en) * 2015-06-05 2019-09-10 Deepmind Technologies Limited Augmented recurrent neural network with external memory
US9614699B2 (en) 2015-08-12 2017-04-04 King Fahd University Of Petroleum And Minerals Apparatuses and methodologies for decision feedback equalization using particle swarm optimization
CN108140141B (zh) * 2015-08-15 2019-09-06 易享信息技术有限公司 在深度神经网络中对表征输入放射体的三维3d数据进行分类的计算机实现的方法及系统
CN106485315B (zh) * 2015-10-08 2019-06-04 上海兆芯集成电路有限公司 具有输出缓冲器反馈与遮蔽功能的神经网络单元
CN108351982B (zh) * 2015-11-12 2022-07-08 谷歌有限责任公司 卷积门控递归神经网络
US11170294B2 (en) * 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
CN105844279B (zh) 2016-03-22 2019-04-23 西安电子科技大学 基于深度学习和sift特征的sar图像变化检测方法
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
US10896367B2 (en) 2017-03-07 2021-01-19 Google Llc Depth concatenation using a matrix computation unit
US9691019B1 (en) 2017-03-07 2017-06-27 Google Inc. Depth concatenation using a matrix computation unit

Also Published As

Publication number Publication date
US20190354834A1 (en) 2019-11-21
EP4235462A3 (de) 2023-09-06
EP3373209A1 (de) 2018-09-12
US20180260683A1 (en) 2018-09-13
TW201837737A (zh) 2018-10-16
DK3373209T3 (da) 2023-10-02
EP3373209B1 (de) 2023-07-05
US20210209444A1 (en) 2021-07-08
GB201803653D0 (en) 2018-04-25
CN108572940A (zh) 2018-09-25
TWI739225B (zh) 2021-09-11
TW202020856A (zh) 2020-06-01
GB2562826A (en) 2018-11-28
CN108572940B (zh) 2022-08-12
DE202018101275U1 (de) 2018-06-22
US10896367B2 (en) 2021-01-19
TWI686711B (zh) 2020-03-01
EP4235462A2 (de) 2023-08-30
WO2018165209A1 (en) 2018-09-13
FI3373209T3 (fi) 2023-09-15
US10699182B2 (en) 2020-06-30

Similar Documents

Publication Publication Date Title
DE102018105198A1 (de) Tiefenverkettung unter Verwendung einer Matrixberechnungseinheit
DE102017121887A1 (de) Ausführen von Kerndurchschreiten in Hardware
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE102017125256A1 (de) Suche nach einer neuronalen Architektur
DE102018100239A1 (de) Schleifen- und Bibliotheksfusion
US9691019B1 (en) Depth concatenation using a matrix computation unit
DE202016107436U1 (de) Neuronaler Netzwerkprozessor
DE202017106475U1 (de) Transponieren in einem Matrix-Vektor-Prozessor
DE202016107442U1 (de) Vektor-Recheneinheit in einem neuronalen Netzwerkprozessor
DE202017104127U1 (de) Superpixel für faltende neuronale Netze
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE202016107439U1 (de) Vorabruf von Gewichten zur Verwendung in einem neuralen Netzwerkprozessor
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE202016008658U1 (de) Bildklassifikationsneuronalnetze
DE102016125838A1 (de) Komprimierte rekurrente neuronale netzmodelle
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE202017106697U1 (de) Umgebungsnavigation unter Verwendung von Verstärkungslernen
DE202017007641U1 (de) Training von maschinellen Lernmodellen auf mehrere maschinelle Lernaufgaben
DE112016003350T5 (de) Kontinuierliche steuerung mit tiefem bestärkendem lernen
DE102016125918A1 (de) Komprimierte rekurrente neuronale Netzwerkmodelle
DE202017107393U1 (de) Vorhersagen eines Suchmaschinen-Einordnungssignalwerts
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE112016001796T5 (de) Feinkörnige bildklassifizierung durch erforschen von etiketten von einem bipartiten graphen
DE112015004203T5 (de) Neuschreibung von abfragen mithilfe von sitzungsinformationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed