DE102020101187A1 - Winograd-transformationsfaltungsoperation für neuronale netze - Google Patents

Winograd-transformationsfaltungsoperation für neuronale netze Download PDF

Info

Publication number
DE102020101187A1
DE102020101187A1 DE102020101187.3A DE102020101187A DE102020101187A1 DE 102020101187 A1 DE102020101187 A1 DE 102020101187A1 DE 102020101187 A DE102020101187 A DE 102020101187A DE 102020101187 A1 DE102020101187 A1 DE 102020101187A1
Authority
DE
Germany
Prior art keywords
feature
neural network
processing circuit
weighting
network processing
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
DE102020101187.3A
Other languages
English (en)
Inventor
Junseok Park
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102020101187A1 publication Critical patent/DE102020101187A1/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/08Learning methods
    • 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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/144Prime factor Fourier transforms, e.g. Winograd transforms, number theoretic transforms
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Discrete Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

Manche Ausführungsbeispiele können eine Durchführung einer Faltungsoperation an einem neuronalen Netz auf Basis einer Winograd-Transformation beinhalten. Manche Ausführungsbeispiele können eine Vorrichtung beinhalten, die eine Neuronalnetz-Verarbeitungsschaltung umfasst, die dafür ausgelegt ist, durch Durchführen einer Winograd-Transformation an einer Eingangsmerkmalskarte durch die Neuronalnetz-Verarbeitungsschaltung eine transformierte Eingangsmerkmalskarte zu erzeugen, wobei die transformierte Eingangsmerkmalskarte eine Matrixform aufweist und eine Mehrzahl von Kanälen einschließt; elementweise Multiplikationen zwischen einem Merkmalsvektor der transformierten Eingangsmerkmalskarte und einem Gewichtsfaktor eines transformierten Gewichtskernel, die auf Basis der Winograd-Transformation erhalten worden sind, durch die Neuronalnetz-Verarbeitungsschaltung durchzuführen und durch die Neuronalnetz-Verarbeitungsschaltung Ergebnisse elementweiser Multiplikationen zu addieren, wobei die elementweisen Multiplikationen Kanal für Kanal in Bezug auf den Merkmalsvektor durchgeführt werden, der Merkmalswerte an einer Position in der Mehrzahl von Kanälen der transformierten Eingangsmerkmalskarte umfasst.

Description

  • VERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Rechte an der am 23. Januar 2019 beim koreanischen Patentamt eingereichten koreanischen Patentanmeldung Nr. 10-2019-0008603 , deren gesamte Offenbarung durch Bezugnahme hierin aufgenommen wird.
  • ALLGEMEINER STAND DER TECHNIK
  • Manche Ausführungsbeispiele und manche erfinderischen Gedanken können Verfahren, Vorrichtungen und dergleichen für die Durchführung von Faltungsoperationen an neuronalen Netzen beinhalten. Manche Ausführungsbeispiele können Verfahren, Vorrichtungen und dergleichen für die Durchführung einer Faltungsoperation an einem neuronalen Netz auf Basis einer Winograd-Transformation betreffen.
  • Neuronales Netz bezeichnet eine Computerarchitektur, die ein Modell eines biologischen Gehirns ist. Da die neuronale Netztechnik eine junge Entwicklung ist, wird in großem Umfang geforscht, um valide Informationen aus Eingangsdaten auf Basis mindestens eines neuronalen Netzes in verschiedenen Arten von elektronischen Systemen zu erhalten. Unter manchen Umständen kann eine Verarbeitung einer Faltungsoperation an einem neuronalen Netz beinhalten, dass eine erhebliche Anzahl von Operationen nötig ist. Daher kann eine Verarbeitungsschaltung für ein neuronales Netz, die dafür ausgelegt ist, eine Faltungsoperation an einem neuronalen Netz auf effiziente Weise durchzuführen, von Vorteil sein.
  • KURZFASSUNG
  • Manche Ausführungsbeispiele mancher erfinderischer Gedanken können Verfahren, Vorrichtungen und dergleichen beinhalten, die eine Faltungsoperation an einem neuronalen Netz auf Basis einer Winograd-Transformation durchführen, wie hierin offenbart. Manche dieser Ausführungsbeispiele, die eine Winograd-Transformation beinhalten, können eine erhöhte Effizienz und/oder einen verringerten Leistungsverbrauch im Vergleich zu manchen anderen Beispielen aufweisen.
  • Manche Ausführungsbeispiele mancher erfinderischer Gedanken können eine Vorrichtung zur Durchführung einer Faltungsoperation an einem neuronalen Netz beinhalten, die eine Verarbeitungsschaltung für neuronale Netze beinhalten kann, die dafür ausgelegt ist, durch Durchführen einer Winograd-Transformation an einer Eingangsmerkmalskarte (input feature map) eine transformierte Eingangsmerkmalskarte zu erzeugen, wobei die transformierte Eingangsmerkmalskarte eine Matrixform aufweist und eine Mehrzahl von Kanälen einschließt; elementweise Multiplikationen zwischen einem Merkmalsvektor der transformierten Eingangsmerkmalskarte und einem Gewichtungsfaktor eines transformierten Gewichtungskernels durchzuführen, der auf Basis der Winograd-Transformation erhalten wird, und die dafür ausgelegt ist, Ergebnisse elementweiser Multiplikationen zu addieren, wobei die elementweisen Multiplikationen Kanal für Kanal in Bezug auf den Merkmalsvektor durchgeführt werden, der Merkmalswerte an einer Position in der Mehrzahl von Kanälen der transformierten Eingangsmerkmalskarte einschließt.
  • Manche Ausführungsbeispiele mancher erfinderischer Gedanken können ein Verfahren zur Betätigung einer Vorrichtung beinhalten, die eine Verarbeitungsschaltung für neuronale Netze einschließt, um eine Faltungsoperation an einem neuronalen Netz durchzuführen, wobei das Verfahren das Umformatieren mindestens eines Winograd-transformierten Gewichtungskernels in eine Mehrzahl von Gewichtungsbalken durch die Verarbeitungsschaltung für neuronale Netze einschließt, durch Gruppieren von Gewichtungen an entsprechenden bzw. korrespondierenden Positionen in einer Mehrzahl von Kanälen des mindestens einen Winograd-transformierten Gewichtungskernels zu den einzelnen Gewichtungsbalken, Erstellen einer Winograd-transformierten Eingangsmerkmalskarte, Durchführen eines Skalarprodukts an jedem von einer Mehrzahl von Merkmalsbalken und einem korrespondierenden Gewichtungsbalken von der Mehrzahl von Gewichtungsbalken durch die Verarbeitungsschaltung für neuronale Netze, wobei jeder von der Mehrzahl von Merkmalsbalken Merkmalswerte an einer gleichen Position in der Mehrzahl von Kanälen der Winograd-transformierten Eingangsmerkmalskarte aufweist, Erzeugen einer Ausgangsmerkmalskarte (output feature map) durch Rück-Umformatierung von Skalarproduktergebnissen durch die Verarbeitungsschaltung für neuronale Netze auf Basis jeweiliger Positionen der Mehrzahl von Gewichtungsbalken, wobei die Skalarproduktergebnisse jeweils im Hinblick auf die Mehrzahl von Gewichtungsbalken berechnet werden, und Durchführen einer Winograd-Rücktransformation an der Ausgangsmerkmalskarte durch die Verarbeitungsschaltung für neuronale Netze.
  • Manche Ausführungsbeispiele mancher erfinderischer Gedanken können eine neuronale Netzkomponente einschließen, wobei die neuronale Netzkomponente eine Verarbeitungsschaltung für neuronale Netze einschließt, die dafür ausgelegt ist, eine Operation an neuronalen Netzen durchzuführen, wobei die Verarbeitungsschaltung für neuronale Netze dafür ausgelegt ist, eine auf Winograd basierende Faltungsoperation jeweils durch Durchführen eines elementweisen Skalarprodukts an einer Eingangsmerkmalskarte und Gewichtungskernels, die durch eine Winograd-Transformation erhalten werden, und Durchführen des elementweisen Skalarprodukts in Bezug auf die einzelnen Merkmalsbalken einschließlich entsprechender Elemente in einer Mehrzahl von Kanälen des Eingangsmerkmalskarte durchzuführen.
  • Figurenliste
  • Manche Ausführungsbeispiele mancher erfinderischer Gedanken können aus der folgenden ausführlichen Beschreibung in Zusammenschau mit den begleitenden Zeichnungen deutlicher verständlich werden, in denen:
    • 1 ein Datenverarbeitungssystem gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken darstellt;
    • 2 die Architektur eines faltenden neuronalen Netzes bzw. Convolution Neural Network als Beispiel für eine Architektur neuronaler Netze darstellt;
    • 3 ein Konzeptdiagramm einer Faltungsoperation auf Basis einer Winograd-Transformation gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 4 ein Ablaufschema eines Verfahrens zur Durchführung einer Faltungsoperation auf Basis einer Winograd-Transformation gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist.
    • 5 ein Diagramm eines Beispiels für das Verfahren von 4 ist;
    • 6 ein Blockdiagramm einer Verarbeitungsschaltung für neuronale Netze gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 7 ein Diagramm zur Erläuterung der Funktionsweise einer Rechenschaltung gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 8 ein Schaltplan eines Verarbeitungselements gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 9 bis 11 Diagramme von Beispielen für Zero-Skipping gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken sind;
    • 12A und 12B Diagramme von Informationen über Eingangsmerkmale mit einem Wert ungleich null gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken sind;
    • 13 ein Schaltplan eines Verarbeitungselements gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 14 ein Blockdiagramm eines Verfahrens zum Betreiben einer Verarbeitungsschaltung für neuronale Netze gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist;
    • 15 ein Blockdiagramm einer integrierten Schaltung und einer Vorrichtung, die diese enthält, gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken ist.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Manche Ausführungsbeispiele beinhalten die Verarbeitung einer Faltungsoperation an einem neuronalen Netz in einer Winograd-Domäne, beispielsweise durch Anwenden einer Winograd-Transformation auf sowohl eine Eingangsmerkmalskarte als auch einen Gewichtungskernel, Anwenden einer elementweisen Multiplikation und einer elementweisen Addition und Anwenden einer Winograd-Rücktransformation auf eine Summe der Addition, um eine Faltungssumme als Ausgabe der Faltungsoperation hervorzubringen. Manche Ausführungsbeispiele, die eine solche Verarbeitung nutzen, können eine Faltungsoperation an einem neuronalen Netz mit einer im Vergleich zu einer direkten Faltung der nicht-transformierten Eingangsmerkmalskarte und des nicht-transformierten Gewichtungskernels verringerten Zahl von Berechnungen abschließen, und eine solche Verringerung kann den Abschluss der Neuronalnetz-Faltungsoperation beschleunigen und/oder die Menge an Leistung verringern, die bis zum Abschluss dieser Operationen verbraucht wird, wie beispielsweise unter Bezugnahme auf 3 deutlich wird. Manche Ausführungsbeispiele beinhalten Vorrichtungsarchitekturen und/oder Neuronalnetz-Verarbeitungsschaltungen, mit denen die Verarbeitung von Faltungsoperationen an neuronalen Netzen auf solche Weise bewerkstelligt werden kann. Zum Beispiel kann in manchen Ausführungsbeispielen eine Faltungsoperation an einem neuronalen Netz auf solche Weise organisiert werden, dass eine Zahl von Vektormultiplikationssummen verringert wird und infolgedessen eine verringerte Zahl von Registern von einer solchen Neuronalnetz-Verarbeitungsschaltung genutzt wird, um die Faltungsoperation durchzuführen.
  • 1 stellt ein Datenverarbeitungssystem 10 gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken dar. Das Datenverarbeitungssystem 10 kann Eingangsdaten auf Basis eines neuronalen Netzes analysieren, valide Informationen erhalten und eine Situation einer elektronischen Vorrichtung, die mit dem Datenverarbeitungssystem 10 ausgestattet ist, auf Basis der validen Informationen identifizieren oder Elemente derselben steuern. Zum Beispiel kann das Datenverarbeitungssystem 10 auf eine Drohne, ein Fahrerassistenzsystem (Advanced Driver Assistance System, ADAS), einen Roboter, einen Smart-Fernseher (TV), ein Smartphone, eine medizinische Vorrichtung, eine mobile Vorrichtung, ein Bildwiedergabegerät, eine Messvorrichtung, eine Vorrichtung des Internet of Things (IoT) usw. angewendet werden. Das Datenverarbeitungssystem 10 kann in beliebige elektronische Vorrichtungen verschiedener anderer Arten eingebaut werden.
  • In manchen Ausführungsbeispielen, und wie in 1 gezeigt, kann das Datenverarbeitungssystem 10 mindestens einen Intellectual-Property(IP)-Block und eine Neuronalnetz-Verarbeitungsschaltung 130 aufweisen. Das Datenverarbeitungssystem 10 kann verschiedene Arten von IP-Blöcken, beispielsweise einen Hauptprozessor 110, einen Speicher mit wahlfreiem Zugriff (RAM) 120, eine Eingabe/Ausgabe(I/O)-Vorrichtung 140 und einen Speicher 150 aufweisen, wie in 1 gezeigt ist. Das Datenverarbeitungssystem 10 kann ferner universelle Elemente aufweisen, wie etwa Multiformat-Codec, ein Videomodul (z.B. eine Kameraschnittstelle, einen Prozessor der Joint Photographic Experts Group (JPEG), einen Videoprozessor oder einen Mischer), einen dreidimensionalen (3D) Grafikkern, ein Audiosystem, einen Anzeigetreiber, eine Grafikverarbeitungseinheit (GPU) und einen Digitalsignalprozessor (DSP). Elemente wie etwa der Hauptprozessor 110, der RAM 120, die Neuronalnetz-Verarbeitungsschaltung 130, die I/O-Vorrichtung 140 und/oder der Speicher 150 können so konfiguriert sein, dass sie Daten über einen Systembus 160 senden und/oder empfangen. Zum Beispiel kann ein Standard-Busprotokoll, ein Protokoll der Advanced Microcontroller Bus Architecture (AMBA) von Advance RISC Machines (ARM) Ltd. auf den Systembus 160 angewendet werden. Als weiteres Beispiel kann das Datenverarbeitungssystem 10 als System-on-Chip (SoC) implementiert sein. Jedoch sind manche Ausführungsbeispiele nicht darauf beschränkt; zum Beispiel können in manchen Ausführungsbeispielen verschiedene Arten von IP-Blöcken, Elementen und/oder Protokollen verwendet werden.
  • In manchen Ausführungsbeispielen können manche Elemente des Datenverarbeitungssystems 10, wie etwa der Hauptprozessor 110, der RAM 120, die Neuronalnetz-Verarbeitungsschaltung 130, die I/O-Vorrichtung 140 und/oder der Speicher 150, in einem einzigen Halbleiterchip implementiert werden. Jedoch sind manche Ausführungsbeispiele nicht darauf beschränkt; zum Beispiel kann das Datenverarbeitungssystem 10 in einer Mehrzahl von Halbleiterchips implementiert werden. In manchen Ausführungsbeispielen kann das Datenverarbeitungssystem 10 einen Anwendungsprozessor aufweisen, der an einer mobilen Vorrichtung montiert ist.
  • In manchen Ausführungsbeispielen kann der Hauptprozessor 110 so konfiguriert sein, dass er manche oder alle Operationen des Datenverarbeitungssystems 10 steuert. Zum Beispiel kann der Prozessor 110 als zentrale Verarbeitungseinheit (CPU) implementiert sein. Der Hauptprozessor 110 kann einen einzelnen Kern oder mehrere Kerne aufweisen. Der Hauptprozessor 110 kann so konfiguriert sein, dass er Programme und/oder Daten, die im RAM 120 und/oder im Speicher 150 gespeichert sind, verarbeitet oder ausführt. Zum Beispiel kann der Hauptprozessor 110 so konfiguriert sein, dass er Funktionen des Datenverarbeitungssystems 10 durch Ausführen von Programmen, die im Speicher 150 gespeichert sind, steuert.
  • In manchen Ausführungsbeispielen kann der RAM 120 dafür ausgelegt sein, Programme, Daten und/oder Befehle vorübergehend zu speichern. Programme und/oder Daten, die im Speicher 150 gespeichert sind, können gemäß der Steuerung des Hauptprozessors 110 oder eines Boot-Codes vorübergehend in den RAM 120 geladen werden. Der RAM 120 kann unter Verwendung eines Speichers wie etwa eines dynamischen RARM (DRAM) oder eines statischen RAM (SRAM) implementiert werden.
  • In manchen Ausführungsbeispielen kann die I/O-Vorrichtung 140 so konfiguriert sein, dass sie eine Benutzereingabe und/oder Eingangsdaten von außerhalb des Datenverarbeitungssystems 10 empfängt und/oder ein Datenverarbeitungsergebnis des Datenverarbeitungssystems 10 ausgibt. Die I/O-Vorrichtung 140 kann als Touchscreen-Panel, als Tastatur oder irgendeine von verschiedenen Arten von Sensoren implementiert werden. In manchen Ausführungsbeispielen kann due I/O-Vorrichtung 140 so konfiguriert sein, dass sie Informationen über die Umgebung des Datenverarbeitungssystems 10 erfasst. Zum Beispiel kann die I/O-Vorrichtung 140 verschiedene Abtastvorrichtungen, wie etwa eine Bilderfassungsvorrichtung, einen Bildsensor, einen Light Detection and Ranging(LIDAR)-Sensor, einen Ultraschallsensor und/oder einen Infrarotsensor aufweisen und/oder kann so konfiguriert sein, dass sie ein Abtastsignal von den Abtastvorrichtungen empfängt. In manchen Ausführungsbeispielen kann die I/O-Vorrichtung 140 dafür ausgelegt sein, ein Bildsignal von außerhalb des Datenverarbeitungssystems 10 zu ertasten und/oder zu empfangen und/oder das Bildsignal in Bilddaten, beispielsweise einen Bild-Frame umzuwandeln. Die I/O-Vorrichtung 140 kann dafür ausgelegt sein, den Bild-Frame im Speicher 150 zu speichern und/oder den Bild-Frame an der Neuronalnetz-Verarbeitungsschaltung 130 bereitzustellen.
  • In manchen Ausführungsbeispielen kann der Speicher 150 als Speicherbaustein zum Speichern von Daten ausgelegt sein. Zum Beispiel kann der Speicher 150 dafür ausgelegt sein, ein Betriebssystem (OS), verschiedene Programme und/oder verschiedene Daten zu speichern. Der Speicher 150 kann DRAM einschließen, aber manche Ausführungsbeispiele müssen nicht darauf beschränkt sein. Der Speicher 150 kann flüchtig und/oder nicht-flüchtig sein. Nicht-flüchtiger Speicher kann mindestens einen von Nur-Lese-Speicher (ROM), programmierbarem ROM (PROM), elektrisch programmierbarem ROM (EPROM), elektrisch löschbarem programmierbarem ROM (EEPROM), Flash-Speicher, Phasenänderungs-RAM (PRAM), magnetischem RAM (MRAM), resistivem RAM (RRAM) und/oder ferroelektrischem RAM (FeRAM) einschließen. Der flüchtige Speicher kann DRAM, SRAM und/oder synchronen DRAM (SDRAM) einschließen. In manchen Ausführungsbeispielen kann der Speicher 150 eine oder mehrere Speichervorrichtungen, wie etwa ein Festplattenlaufwerk (HDD), ein Solid-State-Laufwerk (SSD), einen CompactFlash(CF)-Speicher, einen Secure Digital(SD)-Speicher, einen Micro-SD-Speicher, einen Mini-SD-Speicher, einen Extreme-Digital(xD)-Speicher oder einen Speicher-Stick einschließen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 Hardware, wie etwa Logikschaltungen; eine Hardware/Software-Kombination, wie etwa einen Prozessor, der Software ausführt, oder eine Kombination davon einschließen. Zum Beispiel kann ein Prozessor unter anderem eine zentrale Verarbeitungseinheit (CPU), eine arithmetische Logikeinheit (ALU), einen Digitalsignalprozessor, einen Mikrocomputer, eine im Feld programmierbare Gatteranordnung (FPGA), ein System-on-Chip (SoC), eine programmierbare Logikeinheit, einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC) und dergleichen aufweisen. Die Neuronalnetz-Verarbeitungsschaltung 130 kann dafür ausgelegt sein, ein neuronales Netz zu erzeugen, ein neuronales Netz zu trainieren und/oder zu lernen, eine Operation auf Basis von Eingangsdaten durchzuführen, ein Informationssignal auf Basis eines Operationsergebnisses zu erzeugen und/oder ein neuronales Netz neu zu trainieren. Solche neuronalen Netze können verschiedene Neuronalnetzmodelle, wie etwa ein Convolutional Neural Network (CNN), Region with CNN (R-CNN), ein Region Proposal Network (RPN), ein Recurrent Neural Network (RNN), ein Stacking-based Deep Neural Network (S-DNN), ein State-Space Dynamic Neural Network (S-SDNN), ein Entfaltungsnetz, ein Deep Belief Network (DBN), eine Restricted Boltzmann Machine (RBM), ein Fully Convolutional Network, ein Long Short Term Memory (LSTM) Network und/oder ein Klassifikationsnetz einschließen, aber manche Ausführungsbeispiele sind nicht darauf beschränkt. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 eine Mehrzahl von Verarbeitungselementen einschließen, die jedes für sich und/oder simultan eine Verarbeitung des neuronalen Netzes durchführen, wie etwa einen Satz von Verarbeitungselementen, die jedes für sich und/oder simultan eine Multiplikation auf mehreren Kanälen durchführen. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, das neuronale Netz schrittweise zu verarbeiten, wie etwa in einer Abfolge von Multiplikationsoperationen für jeden der mehreren Kanäle. Ein Beispiel für eine Neuronalnetzarchitektur wird unter Bezugnahme auf 2 beschrieben.
  • 2 stellt die Architektur eines Convolution Neural Network als Beispiel für eine Architektur neuronaler Netze dar. Ein neuronales Netz NN kann eine Mehrzahl von Schichten, beispielsweise eine erste bis eine n-te Schicht LI bis Ln aufweisen. Das neuronale Netz NN kann der Architektur eines tiefen neuronalen Netzes (DNN) oder eines neuronalen Netzes mit n Schichten entsprechen. Die Mehrzahl von Schichten kann eine Convolution Layer, eine Pooling Layer, eine Activation Layer und/oder eine Fully-Connected Layer einschließen. Zum Beispiel kann die erste Schicht LI eine Convolution Layer sein, die zweite Schicht L2 kann eine Pooling Layer sein und die n-te Schicht Ln kann eine Fully-Connected Layer als Ausgabeschicht sein. Das neuronale Netz NN kann auch eine Activation Layer aufweisen und kann ferner andere Schichten aufweisen, die andere Arten von Operationen durchführen.
  • In manchen Ausführungsbeispielen, und wie in 2 gezeigt, kann jede von der ersten bis n-ten Schicht L1 bis Ln dafür ausgelegt sein, Eingangsdaten (z.B. einen Bild-Frame) und/oder eine Merkmalskarte, die in einer früheren Schicht erzeugt worden ist, als Eingangsmerkmalskarte zu empfangen und/oder durch Durchführen einer Operation an der Eingangsmerkmalskarte eine Ausgangsmerkmalskarte oder ein Erkennungssignal REC zu erzeugen. Merkmalskarte bezeichnet Daten, die verschiedene Merkmale von Eingangsdaten darstellen. Eine erste bis eine n-te Merkmalskarte FM1 bis FMn können eine zweidimensionale Matrixform oder eine dreidimensionale Matrixform (oder eine Tensorform) aufweisen. Die erste bis n-te Merkmalskarte FM1 bis FMn können mindestens einen Kanal CH mit einer Matrix von Merkmalswerten aufweisen. Wenn jede von der ersten bis n-ten Merkmalskarte FM1 bis FMn eine Mehrzahl von Kanälen CH aufweist, können die Kanäle CH untereinander jeweils die gleiche Zahl von Reihen H und Spalten W aufweisen. In diesem Fall können eine Reihe H, eine Spalte W und ein Kanal CH der x-Achse, der y-Achse bzw. der z-Achse in einem Koordinatensystem entsprechen. Ein Merkmalswert in einer bestimmten Zeile H und einer bestimmten Spalte W einer zweidimensionalen Matrix in der x-Achsenrichtung und der y-Achsenrichtung (im Folgenden bezeichnet Matrix die zweidimensionale Matrix in der x-Achsenrichtung und der y-Achsenrichtung) kann als Element der Matrix bezeichnet werden. Zum Beispiel kann eine 4×5-Matrix 20 Elemente enthalten.
  • In manchen Ausführungsbeispielen kann eine erste Schicht LI dafür ausgelegt sein, durch Durchführen einer Faltung an einer ersten Merkmalskarte FM1 und einem Gewichtungskernel WK eine zweite Merkmalskarte FM2 zu erzeugen. Der Gewichtungskernel WK kann als Filter oder Gewichtungskarte bezeichnet werden. Der Gewichtungskernel WK kann einbezogen und/oder konfiguriert werden, um die erste Merkmalskarte FM1 zu filtern. Der Aufbau des Gewichtungskernels WK kann dem einer Merkmalskarte ähnlich sein. Der Gewichtungskernel WK kann mindestens einen Kanal CH mit einer Matrix von Gewichtungen aufweisen, und/oder die Zahl der Kanäle CH, die in dem Gewichtungskernel WK enthalten sind, kann der Zahl der Kanäle, die in einer korrespondierenden Merkmalskarte, beispielsweise der ersten Merkmalskarte FM1, enthalten sind, gleich sein. Eine Faltung kann im Gewichtungskernel WK und in der ersten Merkmalskarte FM1 jeweils in den gleichen Kanälen durchgeführt werden.
  • In manchen Ausführungsbeispielen kann ein Gewichtungskernel WK anhand eines Schiebefensterverfahrens auf der ersten Merkmalskarte FM1 verschoben werden und/oder kann mit Fenstern der ersten Merkmalskarte FM1 (die auch als Kacheln bezeichnet werden können) gefaltet werden. Während einer Verschiebung kann jedes Gewicht, das im Gewichtungskernel WK enthalten ist, mit allen Merkmalswerten in einem Bereich, wo der Gewichtungskernel WK die erste Merkmalskarte FM1 überlappt, multipliziert werden und/oder zu diesen addiert werden. Ein Kanal der zweiten Merkmalskarte FM2 kann durch Durchführen einer Faltung an der ersten Merkmalskarte FM1 und/oder dem Gewichtungskernel WK erzeugt werden. Auch wenn in 2 nur ein einziger Gewichtungskernel WK gezeigt ist, kann eine Mehrzahl von Gewichtungskernels WK mit der ersten Merkmalskarte FM1 gefaltet werden, wodurch eine zweite Merkmalskarte FM2 erzeugt wird, die eine Mehrzahl von Kanälen aufweist.
  • In manchen Ausführungsbeispielen kann eine zweite Schicht L2 dafür ausgelegt sein, die dritte Merkmalskarte FM3 zu erzeugen, zum Beispiel durch Ändern einer räumlichen Größe der zweiten Merkmalskarte FM2 durch Pooling. Das Pooling kann als Sampling oder Downsampling bezeichnet werden. Ein zweidimensionales Pooling-Fenster PW kann um eine Einheit von der Größe des Pooling-Fensters PW auf der zweiten Merkmalskarte FM2 verschoben werden, und/oder ein Höchstwert kann aus Merkmalsdaten (oder einem Durchschnitt der Merkmalsdaten) in einem Bereich, in dem das Pooling-Fenster PW die zweite Merkmalskarte FM2 überlappt, ausgewählt werden. Somit kann die dritte Merkmalskarte FM3 durch Ändern der räumlichen Größe der zweiten Merkmalskarte FM2 erzeugt werden. Die Zahl der Kanäle der dritten Merkmalskarte FM3 kann der Zahl der Kanäle der zweiten Merkmalskarte FM2 gleich sein.
  • In manchen Ausführungsbeispielen kann eine n-te Schicht Ln Merkmale einer n-ten Merkmalskarte FMn kombinieren und/oder eine Klasse CL der Eingangsdaten kategorisieren. Die n-te Schicht Ln kann auch dafür ausgelegt sein, das Erkennungssignal REC zu erzeugen, das der Klasse CL entspricht. In manchen Ausführungsbeispielen können die Eingangsdaten Frame-Daten entsprechen, die in einem Videostream enthalten sind. In diesem Fall kann die n-te Schicht Ln eine Klasse, die einem Objekt entspricht, das in einem von den Frame-Daten dargestellten Bild abgebildet wird, auf Basis der n-ten Merkmalskarte FNn, die von einer früheren Schicht bereitgestellt worden ist, extrahieren, um das Objekt zu erkennen und/oder ein Erkennungssignal REC zu erzeugen, das dem Objekt entspricht.
  • Wie wiederum aus 1 ersichtlich ist, kann die Neuronalnetz-Verarbeitungsschaltung 130 einen Hardware-Beschleuniger aufweisen, der dafür ausgelegt ist, Operationen gemäß Neuronalnetzmodellen durchzuführen. In manchen Ausführungsbeispielen kann der Hardware-Beschleuniger ein zweckgebundenes Modul, beispielsweise eine neuronale Verarbeitungseinheit (NPU), eine Tensorverarbeitungseinheit (TPU) oder eine Neural Engine, zum Ansteuern eines neuronalen Netzes sein, ist aber nicht darauf beschränkt. Die Neuronalnetz-Verarbeitungsschaltung 130 kann hierin als Neuronalnetz-Verarbeitungsvorrichtung oder als integrierte Schaltung eines neuronalen Netzes bezeichnet werden.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, Eingangsdaten von mindestens einem anderen Element, wie etwa dem Hauptprozessor 110, der I/O-Vorrichtung 140 und/oder dem Speicher 150, optional über den Systembus 160, zu empfangen und/oder auf Basis der Eingangsdaten ein Informationssignal zu erzeugen. Zum Beispiel kann das Informationssignal, das von der Neuronalnetz-Verarbeitungsschaltung 130 erzeugt wird, mindestens eine von verschiedenen Arten von Erkennungssignalen einschließen, wie etwa ein Spracherkennungssignal, ein Objekterkennungssignal, ein Bilderkennungssignal und/oder ein biometrisches Erkennungssignal. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, Frame-Daten, die in einem Videostream enthalten sind, als Eingangsdaten zu empfangen und/oder aus den Frame-Daten ein Erkennungssignal in Bezug auf ein Objekt zu erzeugen, das in einem Bild enthalten sein kann, das von den Frame-Daten dargestellt wird.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, durch Durchführen einer Neuronalnetzoperation an Eingangsdaten, wie etwa einer Faltungsoperation, ein Informationssignal zu erzeugen. In einem auf Faltung basierenden neuronalen Netz wie einem CNN kann die Faltungsoperation einen erheblichen Teil der Neuronalnetzoperation ausmachen. Die Anzahl der Faltungsoperationen kann auf verschiedenen Faktoren basieren, wie etwa der Zahl von Kanälen einer Eingangsmerkmalskarte, der Zahl von Kanälen eines Gewichtungskernels, der Größe der Eingangsmerkmalskarte, der Größe des Gewichtungskernels, der Präzision von Werten usw. Wie unter Bezugnahme auf 2 beschrieben wurde, kann ein neuronales Netz eine komplexe Architektur aufweisen, und demgemäß kann eine Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, eine große Zahl von Faltungsoperationen durchzuführen.
  • Manche Ausführungsbeispiele können eine Faltungsoperation effizient durch Durchführen von Faltungsoperationen auf Basis einer Winograd-Transformation durchführen, wodurch eine Verringerung der Zahl von Multiplikationen, die an Faltungsoperationen beteiligt sind, möglich ist.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, durch Durchführen einer Winograd-Transformation an einer Eingangsmerkmalskarte und/oder einer Mehrzahl von Gewichtungskernels auf einer Convolution Layer und/oder durch Durchführen einer elementweisen Multiplikation an einer transformierten Eingangsmerkmalskarte und/oder einer Mehrzahl von transformierten Gewichtungskernels in einer Winograd-Domäne eine Faltungsoperation durchzuführen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, ein Skalarprodukt eines Merkmalsbalkens der transformierten Eingangsmerkmalskarte und/oder eines Gewichtungsbalkens der transformierten Gewichtungskernels durchzuführen. Ein Skalarprodukt zwischen dem Merkmalsbalken und/oder dem Gewichtungsbalken kann parallel Element für Element durchgeführt werden. In diesem Fall kann der Merkmalsbalken Merkmalswerte an einer gleichen Position in einer Mehrzahl von Kanälen der Eingangsmerkmalskarte, das heißt, Merkmalswerte eines bestimmten Elements von Matritzen in einer Kanalrichtung, aufweisen. Der Gewichtungsbalken kann Gewichtungen an einer gleichen Position in einer Mehrzahl von Kanälen des Gewichtungskernels, das heißt, Gewichtungen eines bestimmten Elements von Matritzen in der Kanalrichtung, aufweisen. Der Merkmalsbalken kann als Merkmalskanalvektor bezeichnet werden und/oder der Gewichtungsbalken kann als Gewichtungskanalvektor bezeichnet werden.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, bei der Durchführung eines elementweisen Skalarprodukts an einem Merkmalsbalken der transformierten Eingangsmerkmalskarte und/oder einem Gewichtungsbalken des transformierten Gewichtungskernels Merkmalswerte nacheinander bzw. sequentiell Kanal für Kanal mit Gewichtungen zu multiplizieren und/oder eine Addition durchzuführen. Anders ausgedrückt kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, Operationen (zum Beispiel eine elementweise Multiplikation und/oder eine elementweise Addition) sequentiell an den Merkmalswerten und/oder den Gewichtungen in der Kanalrichtung durchzuführen. In diesem Fall können manche Ausführungsbeispiele eine Neuronalnetz-Verarbeitungsschaltung 130 aufweisen, die dafür ausgelegt sein kann, Skalarprodukte in Bezug auf eine Mehrzahl von Merkmalsbalken parallel durchzuführen.
  • In manchen Ausführungsbeispielen kann eine Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, auf Basis einer sequentiell erfolgenden Durchführung von Operationen an Merkmalswerten und/oder Gewichtungen in der Kanalrichtung eine Operation in Bezug auf einen Kanal, in dem mindestens ein Merkmalswert und/oder eine Gewichtung einen Wert gleich null (Nullwert oder Zero) hat, zu überspringen (skipping). Anders ausgedrückt kann für einen Merkmalswert oder eine Gewichtung während der Operation der Neuronalnetz-Verarbeitungsschaltung 130 ein Zero-Skipping angewendet werden.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, auf Basis des Anteils der einen Wert gleich null aufweisenden Merkmalswerte an einer Eingangsmerkmalskarte oder des Anteils der einen Wert gleich null aufweisenden Gewichtungen an Gewichtungskernels zu bestimmen, ob ein Zero-Skipping angewendet werden soll. Wenn der Anteil von Merkmalswerten mit einem Wert gleich null beispielsweise niedriger ist als ein bestimmter Referenzwert, könnte ein Zero-Skipping nicht angewendet werden.
  • Wie oben beschrieben, können gemäß manchen Ausführungsbeispielen bei der Durchführung einer auf einer Winograd-Transformation basierenden Faltungsoperation in dem Datenverarbeitungssystem 10 transformierte Gewichtungskernels gemäß der Faltungsoperation auf Basis einer Winograd-Transformation in Gewichtungsbalken in der Kanalrichtung umformatiert werden, und/oder die Neuronalnetz-Verarbeitungsschaltung 130 kann dafür ausgelegt sein, ein Skalarprodukt in Einheiten von Balken (z.B. in Bezug auf einen Merkmalsbalken und/oder einen Gewichtungsbalken) durchzuführen. Wenn das Skalarprodukt durchgeführt wird, kann ein Wert, der durch Hinzufügen von Ergebnissen elementweiser Multiplikationen in Bezug auf eine Mehrzahl von Kanälen erhalten wird, in einem Register (z.B. einem Akkumulationsregister) gespeichert werden, so dass die Kapazität des Registers verringert werden kann. Demgemäß kann/können in manchen Ausführungsbeispielen die Schaltungsgröße und/oder ein Leistungsverbrauch der Neuronalnetz-Verarbeitungsschaltung 130 verringert werden.
  • Außerdem kann während der Multiplikation und/oder der Akkumulation eines Skalarprodukts ein Zero-Skipping angewendet werden, was die Anzahl der Operationen verringern kann. In manchen Ausführungsbeispielen kann in dem Fall, dass ein Anteil von einen Wert gleich null aufweisenden Merkmalswerten an einer Eingangsmerkmalskarte und/oder ein Anteil von einen Wert gleich null aufweisenden Gewichtungen an Gewichtungskernels kleiner ist/sind als der bestimmte Referenzwert, der Leistungsverbrauch der Neuronalnetz-Verarbeitungsschaltung 130 stärker verringert werden, wenn kein Zero-Skipping angewendet wird als wenn ein Zero-Skipping angewendet wird. Demgemäß kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, auf Basis eines Anteils von einen Wert gleich null aufweisenden Merkmalswerten an der Eingangsmerkmalskarte und/oder eines Anteils von einen Wert gleich null aufweisenden Gewichtungen an den Gewichtungskernels zu bestimmen, ob ein Zero-Skipping angewendet werden soll. Infolgedessen kann die Leistung des Datenverarbeitungssystems 10 verbessert werden und/oder sein Leistungsverbrauch kann verringert werden.
  • 3 ist ein Konzeptdiagramm einer Faltungsoperation auf Basis einer Winograd-Transformation gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Wie in 3 gezeigt ist, kann eine Winograd-Transformation an einer Eingangsmerkmalskarte IFM und/oder einem Gewichtungskernel WK durchgeführt werden, um entsprechend eine transformierte Eingangsmerkmalskarte WIFM und/oder einen transformierten Gewichtungskernel WWK in einer Winograd-Domäne zu erzeugen. In manchen verschiedenen Ausführungsformen kann die Winograd-Transformation von der Neuronalnetz-Verarbeitungsschaltung 130 und/oder anderen IP-Blöcken, wie etwa einem Hauptprozessor 110, einer GPU und/oder einem DSP eines Datenverarbeitungssystems 10, durchgeführt werden.
  • Zum Beispiel kann/können in einem Fall, wo die Eingangsmerkmalskarte IFM vier Kanäle in Form einer 4×4-Matrix aufweist und/oder der Gewichtungskernel WK vier Kanäle in Form einer 3×3-Matrix aufweist, die Eingangsmerkmalskarte IFM und/oder der Gewichtungskernel WK durch eine Winograd-Transformation transformiert werden, um entsprechend die transformierte Eingangsmerkmalskarte WIFM und/oder den transformierten Gewichtungskernel WWK zu erzeugen, die jeweils vier Kanäle in Form einer 4×4-Matrix aufweisen. Anders ausgedrückt kann die Größe der transformierten Eingangsmerkmalskarte WIFM der Größe des transformierten Gewichtungskernels WWK gleich sein.
  • In 3 bezeichnet ein Sternchensymbol („*“) eine Faltungsoperation, und ein Kreissymbol mit einem Punkt in der Mitte („⊙“) bezeichnet eine elementweise Multiplikation. Eine Faltungsoperation der Eingangsmerkmalskarte IFM und/oder des Gewichtungskernels WK kann als elementweise Multiplikation der transformierten Eingangsmerkmalskarte WIFM und/oder des transformierten Gewichtungskernels WWK in der Winograd-Domäne ausgedrückt werden.
  • Wenn die Faltungsoperation an der Eingangsmerkmalskarte IFM und/oder dem Gewichtungskernel WK durchgeführt wird, kann ein Operationsergebnis RCONV in Form einer 2×2-Matrix für jeden der vier Kanäle ausgegeben werden. Eine elementweise Addition wird an dem Operationsergebnis RCONV durchgeführt, wodurch eine Ausgangsmerkmalskarte OFM in Form einer 2×2-Matrix erzeugt werden kann.
  • Auf Basis einer elementweisen Multiplikation, die an der transformierten Eingangsmerkmalskarte WIFM und/oder dem transformierten Gewichtungskernel WWK in der Winograd-Domäne durchgeführt wird, kann ein Operationsergebnis RMUL in Form einer 4×4-Matrix für jeden der vier Kanäle ausgegeben werden. Eine elementweise Addition wird an dem Operationsergebnis RCONV durchgeführt, so dass eine Ausgangsmerkmalskarte WOFM in Form einer 4×4-Matrix erzeugt werden kann. Eine Winograd-Rücktransformation wird an der transformierten Ausgangsmerkmalskarte WOFM durchgeführt, so dass die transformierte Ausgangsmerkmalskarte WOFM, welche die Form einer 4×4-Matrix aufweist, in die Ausgangsmerkmalskarte OFM transformiert werden kann, welche die Form einer 2×2-Matrix aufweist.
  • Wie oben beschrieben, kann, wenn eine elementweise Multiplikation und/oder eine elementweise Addition an der transformierten Eingangsmerkmalskarte WIFM und/oder dem transformierten Gewichtungskernel WWK, die über eine Winograd-Transformation erzeugt werden, durchgeführt wird und/oder das Ergebnis der elementweisen Addition einer Winograd-Rücktransformation unterzogen wird, ein Operationsergebnis erzeugt werden, das dem Ergebnis der Durchführung einer Faltungsoperation an der Eingangsmerkmalskarte IFM und/oder dem Gewichtungskernel WK, das heißt der Ausgangsmerkmalskarte OFM gleich ist.
  • Manche Ausführungsbeispiele können elementweise Multiplikationen der transformierten Eingangsmerkmalskarte WIFM und/oder des transformierten Gewichtungskernels WWK und/oder eine Zahl von Operationen, die an der Winograd-Transformation und/oder der Winograd-Rücktransformation beteiligt sind, durchführen, wobei eine Zahl solcher Multiplikationen kleiner sein kann als eine Zahl von Multiplikationsoperationen, die an der keine Winograd-Faltung beinhaltenden Operation an der Eingangsmerkmalskarte IFM und/oder dem Gewichtungskernel WK beteiligt sind. Somit kann in manchen Ausführungsbeispielen, welche die Neuronalnetz-Verarbeitungsschaltung 130 aufweisen, die dafür ausgelegt ist, eine Faltungsoperation auf Basis einer Winograd-Transformation durchzuführen, die Zahl der Operationen und/oder ein Leistungsverbrauch verringert sein.
  • 4 ist ein Ablaufschema eines Verfahrens zur Durchführung einer Faltungsoperation auf Basis einer Winograd-Transformation gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken.
  • 5 ist ein Diagramm eines Beispiels für das Verfahren von 4. Das Verfahren von 4 und 5 kann in dem Datenverarbeitungssystem 10 von 1 durchgeführt werden.
  • Wie in 4 und 5 gezeigt ist, führt eine Neuronalnetz-Verarbeitungsschaltung (z.B. die Neuronalnetz-Verarbeitungsschaltung 130 in 1) eine Vorverarbeitung an einem Gewichtungskernel durch.
  • In einer Operation S111 führt die Neuronalnetz-Verarbeitungsschaltung 130 eine Winograd-Transformation an dem Gewichtungskernel durch, um einen transformierten Gewichtungskernel zu erzeugen. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, einen ersten transformierten Gewichtungskernel WWK0 und/oder einen zweiten transformierten Gewichtungskernel WWK1 zu erzeugen. Auch wenn in 5 zwei transformierte Gewichtungskernels, wie etwa der erste und/oder der zweite transformierte Gewichtungskernel WWK0 und/oder WWK1 , dargestellt sind, müssen manche Ausführungsbeispiele mancher erfinderischer Gedanken nicht darauf beschränkt sein; zum Beispiel kann in manchen Ausführungsbeispielen mindestens ein Gewichtungskernel transformiert werden, so dass mindestens ein transformierter Gewichtungskernel erzeugt wird. Sowohl der erste transformierte Gewichtungskernel WWK0 als auch der zweite transformierte Gewichtungskernel WWK1 können beispielsweise acht Kanäle aufweisen, die jeweils die Form einer 4×4-Matrix aufweisen, die 16 Elemente (z.B. Pixel einer Matrix eines Kanals) aufweisen.
  • In einer Operation S112 gruppiert die Neuronalnetz-Verarbeitungsschaltung 130 den transformierten Gewichtungskernel nach Gewichtungsbalken (oder Gewichtungskanalvektoren), um den transformierten Gewichtungskernel in eine Mehrzahl von Gewichtungsbalken umzuformatieren. Wenn beispielsweise der erste transformierte Gewichtungskernel WWK0 und/oder der zweite transformierte Gewichtungskernel WWK1 jeweils 16 Elemente aufweisen, wie in 5 gezeigt ist, dann kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, den ersten transformierten Gewichtungskernel WWK0 und/oder den zweiten transformierten Gewichtungskernel WWK1 nach Gewichtungsbalken zu gruppieren, so dass der erste transformierte Gewichtungskernel WWK0 und/oder der zweite transformierte Gewichtungskernel WWK1 zu einem ersten bis sechzehnten Gewichtungsbalken WB0 bis WB15 umformatiert werden kann bzw. können.
  • In manchen Ausführungsbeispielen kann die Vorverarbeitung des Gewichtungskernels in der Operation S110 durchgeführt werden, bevor die Eingangsmerkmalskarte IFM empfangen wird. In manchen Ausführungsbeispielen kann während der Vorverarbeitung des Gewichtungskernels mindestens eine der Operationen S111 und S112 durch ein anderes Element der Neuronalnetz-Verarbeitungsschaltung 130 im Datenverarbeitungssystem 10 von 1 durchgeführt werden, wie etwa von einem Hauptprozessor 110, und/oder die Neuronalnetz-Verarbeitungsschaltung 130 kann dafür ausgelegt sein, das Ergebnis der Vorverarbeitung zu empfangen. In manchen anderen Ausführungsbeispielen können alle Operationen S111 bis S112 von der Neuronalnetz-Verarbeitungsschaltung 130 durchgeführt werden.
  • In einer Operation S120 führt die Neuronalnetz-Verarbeitungsschaltung 130, wenn sie Eingangsdaten empfängt, eine Winograd-Transformation WT an einer Eingangsmerkmalskarte durch, um eine transformierte Eingangsmerkmalskarte zu erzeugen. Wie in 5 gezeigt ist, kann die transformierte Eingangsmerkmalskarte WIFM den gleichen Aufbau (z.B. die gleiche Zahl von Kanälen und/oder die gleiche Matrixgröße) wie der erste und/oder der zweite transformierte Gewichtungskernel WWK0 und/oder WWKL1 aufweisen und/oder kann beispielsweise einen ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 aufweisen.
  • In der Operation S130 kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, ein Skalarprodukt an jedem der Merkmalsbalken der transformierten Eingangsmerkmalskarte und/oder einem korrespondierenden einen von den Gewichtungsbalken des transformierten Gewichtungskernels durchzuführen. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, eine elementweise Multiplikation an der transformierten Merkmalskarte und/oder dem transformierten Gewichtungskernel nicht in Einheiten von Kanälen, sondern in Einheiten von Merkmalsbalken durchzuführen. Die Neuronalnetz-Verarbeitungsschaltung 130 kann dafür ausgelegt sein, ein Skalarprodukt am ersten Merkmalsbalken FB0 und/oder am ersten Gewichtungsbalken WB0 durchzuführen und/oder ein Skalarprodukt am zweiten Merkmalsbalken FB1 und/oder am zweiten Gewichtungsbalken WB1 durchzuführen. Auf diese Weise kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, ein Skalarprodukt an jedem vom ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 und/oder an einem korrespondierenden einen vom ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 durchzuführen. In manchen Ausführungsbeispielen kann jedes Ergebnis einer Skalarproduktoperation in einem Register gespeichert werden. Zum Beispiel können die Ergebnisse von Skalarprodukten in Bezug auf den ersten bis sechzehnte Merkmalsbalken FB0 bis FB15 in 32 korrespondierenden Registern gespeichert werden. In manchen Ausführungsbeispielen können die Ergebnisse von Skalarprodukten zwischen dem ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 und dem ersten bis sechzehnten Gewichtungsbalken WB0 bis WB15 des ersten transformierten Gewichtungskernels WWK0 in 16 korrespondierenden Registern gespeichert werden, und/oder die Ergebnisse von Skalarprodukten zwischen dem ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 und dem ersten bis sechzehnten Gewichtungsbalken WB0 bis WB15 des zweiten transformierten Gewichtungskernels WWK1 können in korrespondierenden anderen 16 Registern gespeichert werden.
  • In manchen Ausführungsbeispielen kann eine Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, Skalarprodukte in Bezug auf den ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 parallel durchzuführen. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130 eine Rechenschaltung 131 in 6 aufweisen, die eine Mehrzahl von Verarbeitungselementen PE aufweist. Die Neuronalnetz-Verarbeitungsschaltung 130 kann ein Skalarprodukt an einem Merkmalsbalkens und/oder einem Gewichtungsbalkens durchführen, und/oder die Verarbeitungselemente PE können Skalarprodukte jeweils parallel durchführen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, eine Multiplikation und/oder eine Addition an Merkmalswerten eines Merkmalsbalkens und/oder an Gewichtungen eines Gewichtungsbalkens sequentiell Kanal für Kanal (oder Element für Element auf allen Kanälen) durchzuführen. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, eine Operation in Bezug auf einen Kanal, in dem mindestens einer/eines von einem Merkmalswert und/oder einem Gewicht einen Wert gleich null hat, zu überspringen. Anders ausgedrückt kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, ein Skalarprodukt an einem Merkmalswert und/oder einem Gewicht durchzuführen, die jeweils einen Wert ungleich null aufweisen. Der Aufbau und/oder die Funktionsweise eines Verarbeitungselements der Neuronalnetz-Verarbeitungsschaltung 130, die Zero-Skipping verwendet, wird/werden nachstehend unter Bezugnahme auf 8 bis 11 beschrieben.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, Multiplikationen an Merkmalswerten eines Merkmalsbalkens und/oder an Gewichtungen eines Gewichtungsbalkens jeweils für sich und/oder simultan Kanal für Kanal durchzuführen und dann eine Addition an den Multiplikationsergebnissen durchzuführen. Der Aufbau und/oder die Funktionsweise eines Verarbeitungselements der Neuronalnetz-Verarbeitungsschaltung 130, die dafür ausgelegt ist, Multiplikationen jeweils für sich und/oder simultan Kanal für Kanal durchzuführen, wird/werden nachstehend unter Bezugnahme auf 13 beschrieben.
  • In einer Operation S140 führt die Neuronalnetz-Verarbeitungsschaltung 130 eine Rück-Umformatierung an den Ergebnissen von Skalarprodukten durch, um eine transformierte Ausgangsmerkmalskarte zu erzeugen.
  • In einer Operation S141 führt die Neuronalnetz-Verarbeitungsschaltung 130 eine Rück-Umformatierung an den Ergebnissen von Skalarprodukten, die in Bezug auf die Merkmalsbalken in der Operation S130 erhalten wurden, gemäß der Position jedes Merkmalsbalkens (oder der Position jedes Gewichtungsbalkens) durch. Demgemäß können Kanäle der transformierten Ausgangsmerkmalskarte, beispielsweise einer ersten transformierten Ausgangsmerkmalskarte WOFM0 und/oder einer zweiten transformierten Ausgangsmerkmalskarte WOFM1 , erzeugt werden. In manchen Ausführungsbeispielen ist die erste transformierte Ausgangsmerkmalskarte WOFM0 ein Operationsergebnis auf Basis der transformierten Eingangsmerkmalskarte WIFM und/oder des ersten transformierten Gewichtungskernels WWK0 , und/oder die zweite transformierte Ausgangsmerkmalskarte WOFM1 ist ein Operationsergebnis auf Basis der transformierten Eingangsmerkmalskarte WIFM und/oder des zweiten transformierten Gewichtungskernels WWK1 . Die erste transformierte Ausgangsmerkmalskarte WOFM0 und/oder die zweite transformierte Ausgangsmerkmalskarte WOFM1 können unterschiedliche Kanäle der transformierten Ausgangsmerkmalskarte bilden.
  • In einer Operation S142 führt die Neuronalnetz-Verarbeitungsschaltung 130 eine Winograd-Rücktransformation WT-1 an einer transformierten Ausgangsmerkmalskarte durch, um eine Ausgangsmerkmalskarte zu erzeugen. Die Neuronalnetz-Verarbeitungsschaltung 130 kann dafür ausgelegt sein, eine erste Ausgangsmerkmalskarte OFMco und/oder eine zweite Ausgangsmerkmalskarte OFMC1 zu erzeugen, die jeweils die Form einer 2×2-Matrix aufweisen, durch Durchführen der Winograd-Rücktransformation WT-1 an der ersten transformierten Ausgangsmerkmalskarte WOFM0 und/oder der zweiten transformierten Ausgangsmerkmalskarte WOFM1 , die jeweils die Form einer 4×4-Matrix aufweisen. Die erste Ausgangsmerkmalskarte OFMC0 und/oder die zweite Ausgangsmerkmalskarte OFMC1 können unterschiedliche Kanäle der Ausgangsmerkmalskarte bilden.
  • Eine Faltungsoperation auf Basis einer Winograd-Transformation wurde unter Bezugnahme auf 4 und 5 beschrieben. Wie oben beschrieben, kann gemäß manchen Ausführungsbeispielen die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, auf Basis einer Faltungsoperation, die auf Basis einer Winograd-Transformation durchgeführt wird, einen transformierten Gewichtungskernel in eine Mehrzahl von Gewichtungsbalken zu transformieren und/oder ein Skalarprodukt (zum Beispiel eine Multiplikation und/oder Addition) an einem Merkmalsbalken einer transformierten Eingangsmerkmalskarte und/oder einem Gewichtungsbalken eines transformierten Gewichtungskernels durchzuführen. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt sein, ein Skalarprodukt in Bezug auf die einzelnen Merkmalsbalken (oder die einzelnen Gewichtungsbalken) durchzuführen.
  • Im Unterschied zu Ausführungsbeispielen, in denen eine Neuronalnetz-Verarbeitungsschaltung 130 dafür ausgelegt ist, Faltungsoperationen auf Basis einer Winograd-Transformation durchzuführen, kann eine Verarbeitung, die eine elementweise Multiplikation in Einheiten von Kanälen und/oder die Addition von elementweisen Multiplikationsergebnissen in Bezug auf jeden von einer Mehrzahl von Kanälen beinhaltet, ein Speichern der elementweisen Multiplikationsergebnisse jedes Kanals beinhalten. Wenn zum Beispiel eine elementweise Multiplikation in Einheiten von Kanälen in Bezug auf die transformierte Eingangsmerkmalskarte WIFM , die acht Kanäle in Form einer 4×4-Matrix aufweist, und/oder den ersten und/oder den zweiten transformierten Gewichtungskernel WWK0 und/oder WWK1 , der acht Kanäle in Form einer 4×4-Matrix aufweist, durchgeführt wird (zum Beispiel eine elementweise Multiplikation, die an einem ersten Kanal der transformierten Eingangsmerkmalskarte WIFM und/oder einem ersten Kanal des ersten transformierten Gewichtungskernels WWK0 durchgeführt wird), wie in 5 gezeigt, dann werden sechs elementweise Multiplikationsergebnisse für jeden der acht Kanäle, das heißt 128 elementweise Multiplikationsergebnisse in Bezug auf zwei transformierte Gewichtungskernels, gespeichert.
  • Im Gegensatz dazu kann in manchen Ausführungsbeispielen, da in der Faltungsoperation, die von der Neuronalnetz-Verarbeitungsschaltung 130 auf Basis einer Winograd-Transformation durchgeführt wird, ein Skalarprodukt in Einheiten von Balken (z.B. in Bezug auf einen Merkmalsbalken und/oder einen Gewichtungsbalken) in der Kanalrichtung durchgeführt wird, die Summe von Multiplikationsergebnissen in Bezug auf alle Kanäle in einem einzigen Register gespeichert werden und/oder es können sechzehn Ergebnisse in Bezug auf die zwei transformierten Gewichtungskernels, das heißt 32 Ergebnisse in Bezug auf die zwei transformierten Gewichtungskernels, in Registern gespeichert werden. Wenn ein Operationsverfahren durch eine Neuronalnetz-Verarbeitungsschaltung 130 durchgeführt wird, die gemäß einem Ausführungsbeispiel konfiguriert ist, werden infolgedessen weniger Register verwendet und/oder die Schaltungsgröße und/oder der Leistungsverbrauch der Neuronalnetz-Verarbeitungsschaltung 130 kann/können verringert werden.
  • 6 ist ein Blockschema einer Neuronalnetzvorrichtung gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Eine Neuronalnetz-Verarbeitungsschaltung 130a von 6 kann auf das Datenverarbeitungssystem 10 von 1 angewendet werden.
  • In manchen Ausführungsbeispielen und wie in 6 gezeigt, kann die Neuronalnetz-Verarbeitungsschaltung 130a eine Rechenschaltung 131, einen Gewichtungspufferspeicher 132, einen Merkmalskartenpufferspeicher 133, eine Transformationsschaltung 134, einen Controller 135 und/oder einen RAM 136 aufweisen. Manche oder alle Elemente der Neuronalnetz-Verarbeitungsschaltung 130a, einschließlich der Rechenschaltung 131, des Gewichtungspufferspeichers 132, des Merkmalskartenpufferspeichers 133, der Transformationsschaltung 134, des Controllers 135 und/oder des RAM 136 der Neuronalnetz-Verarbeitungsschaltung 130a, können dafür ausgelegt sein, über einen Systembus miteinander zu kommunizieren. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130a in einem einzelnen Halbleiterchip implementiert werden und/oder kann beispielsweise als SoC implementiert werden, ohne jedoch darauf beschränkt zu sein. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130a in einer Mehrzahl von Halbleiterchips implementiert werden.
  • In manchen Ausführungsbeispielen, und wie in 6 gezeigt, kann die Rechenschaltung 131 eine Mehrzahl von Verarbeitungselementen PE aufweisen und/oder kann die Faltungsoperation, beispielsweise eine elementweise Multiplikation und/oder Addition, auf Basis einer Winograd-Transformation durchführen, wie unter Bezugnahme auf 4 und 5 beschrieben wurde. Die Verarbeitungselemente PE können dafür ausgelegt sein, ein Skalarprodukt an einem Merkmalsbalken und/oder einem Gewichtungsbalken durchzuführen. In manchen Ausführungsbeispielen kann der Gewichtungspufferspeicher 132 dafür ausgelegt sein, Gewichtungskernels zu speichern und/oder die Gewichtungskernels an der Neuronalnetz-Verarbeitungsschaltung 130a bereitzustellen. Der Gewichtungspuffer 132 kann einen RAM, wie etwa einen DRAM oder SRAM, einschließen. In manchen Ausführungsbeispielen kann der Gewichtungspufferspeicher 132 dafür ausgelegt sein, Gewichtungskernels zu speichern, die einer Vorverarbeitung unterzogen wurden, wie etwa in der Operation S110 in 4. Zum Beispiel kann der Gewichtungspufferspeicher 132 dafür ausgelegt sein, Gewichtungskernels zu speichern, die auf Basis einer Winograd-Transformation transformiert wurden, und/oder Gewichtungsbalken zu speichern, in welche die transformierten Gewichtungskernel umformatiert wurden.
  • In manchen Ausführungsbeispielen kann ein Merkmalskartenpufferspeicher 133 dafür ausgelegt sein, Eingangsmerkmalskarten oder Ausgangsmerkmalskarten zu speichern. Der Merkmalskartenpufferspeicher 133 kann einen RAM einschließen. In manchen Ausführungsbeispielen kann der Merkmalskartenpufferspeicher 133 ein auf allgemeiner Matrixmultiplikation (GEMM) basierender Merkmalskartenpufferspeicher sein.
  • Der Merkmalskartenpufferspeicher 133 kann dafür ausgelegt sein, Eingangsmerkmalskarten an der Transformationsschaltung 134 oder der Rechenschaltung 131 bereitzustellen. Zum Beispiel kann der Merkmalskartenpufferspeicher 133 dafür ausgelegt sein, Eingangsmerkmalskarten, die in einer auf Winograd basierenden Faltung verwendet werden, an der Transformationsschaltung 134 bereitzustellen und/oder Eingangsmerkmalskarten, die nicht in einer Winograd-Transformation verwendet werden, an der Rechenschaltung 131 bereitzustellen. Zum Beispiel können Operationen, die keine Winograd-Transformation beinhalten, eine 1×1-Faltung, wenn ein Gewichtungskernel die Form einer 1×1-Matrix aufweist, eine Fully-Connected-Layer-Operation und so weiter einschließen. Außerdem kann der Merkmalskartenpufferspeicher 133 dafür ausgelegt sein, Ausgangsmerkmalskarten von der Rechenschaltung 131 und/oder der Transformationsschaltung 134 zu empfangen und/oder die Ausgangsmerkmalskarten zu speichern.
  • Die Transformationsschaltung 134 kann dafür ausgelegt sein, eine Winograd-Transformation oder eine Winograd-Rücktransformation durchzuführen. Die Transformationsschaltung 134 kann als Hardware-Logik implementiert werden, die einen Multiplikator und/oder einen Subtrahierer einschließt. Die Transformationsschaltung 134 kann dafür ausgelegt sein, eine Winograd-Transformation an einer Eingangsmerkmalskarte durchzuführen und/oder eine transformierte Eingangsmerkmalskarte an der Rechenschaltung 131 bereitzustellen. Außerdem kann die Transformationsschaltung 134 dafür ausgelegt sein, Operationsergebnisse, wie etwa Skalarproduktergebnisse, von der Rechenschaltung 131 zu empfangen; durch Durchführen einer Rück-Umformatierung an den Operationsergebnissen eine Ausgangsmerkmalskarte zu erzeugen; und/oder eine Winograd-Rücktransformation an der Ausgangsmerkmalskarte durchzuführen. Zum Beispiel kann die Transformationsschaltung 134 dafür ausgelegt sein, durch Durchführen einer inversen Umformatierung an den Ergebnissen von Skalarprodukten, die in Bezug auf Merkmalsbalken durchgeführt werden können, gemäß der Position jedes Merkmalsbalkens (oder der Position jedes Gewichtungsbalkens) eine transformierte Ausgangsmerkmalskarte, das heißt eine Ausgangsmerkmalskarte in einer Winograd-Domäne, zu erzeugen, wie in der Operation S140, die unter Bezugnahme auf 4 und 5 beschrieben wurde. Die transformierte Schaltung 134 kann dafür ausgelegt sein, durch Durchführen einer Winograd-Rücktransformation an der transformierte Ausgangsmerkmalskarte eine Ausgangsmerkmalskarte in der Zeitdomäne zu erzeugen.
  • In manchen Ausführungsbeispielen kann ein Controller 135 so konfiguriert sein, dass er alle Operationen der Neuronalnetz-Verarbeitungsschaltung 130a steuert. Zum Beispiel kann der Controller 135 dafür ausgelegt sein, die Operationen der Rechenschaltung 131, des Gewichtungspufferspeichers 132, des Merkmalskartenpufferspeichers 133 und/oder der Transformationsschaltung 134 zu steuern. Zum Beispiel kann der Controller 135 dafür ausgelegt sein, Parameter, die an einer Neuronalnetzoperation, beispielsweise einer auf Winograd basierenden Faltungsoperation, beteiligt sind, einzustellen und/oder zu verwalten, so dass die Rechenschaltung 131 eine Verarbeitung einer oder mehrerer Schichten eines neuronalen Netzes durchführen kann.
  • In manchen Ausführungsbeispielen kann der Controller 135 dafür ausgelegt sein, eine Vorverarbeitung an Gewichtungskernels durchzuführen. Zum Beispiel kann der Controller 135 dafür ausgelegt sein, Gewichtungskernels, die auf Basis einer Winograd-Transformation transformiert wurden, in Gewichtungsbalken umzuformatieren und/oder die Gewichtungsbalken in dem Gewichtungspufferspeicher 132 zu speichern.
  • In manchen Ausführungsbeispielen kann der Controller 135 dafür ausgelegt sein, Informationen über Eingangsmerkmale zu erzeugen, die in einer Eingangsmerkmalskarte einen Wert ungleich null aufweisen; Informationen über Eingangsmerkmale mit einem Wert ungleich null und/oder Informationen über Gewichtungen mit einem Wert ungleich null in jedem Gewichtungskernel zu erzeugen und/oder die Informationen an der Rechenschaltung 131 bereitzustellen. Bei der Durchführung eines Skalarprodukts kann somit jedes von den Verarbeitungselementen PE der Rechenschaltung 131 dafür ausgelegt sein, eine Multiplikation in Bezug auf ein Eingangsmerkmal mit einem Wert ungleich null durchzuführen und/oder ein Eingangsmerkmal mit einem Wert ungleich null mit einem Gewicht mit einem Wert ungleich null zu multiplizieren. Anders ausgedrückt kann Zero-Skipping auf Basis der Informationen über Eingangsmerkmale mit einem Wert ungleich null und/oder der Informationen über Gewichtungen, die einen Wert ungleich null aufweisen, angewendet werden, wenn die Verarbeitungselemente PE ein Skalarprodukt durchführen.
  • In manchen Ausführungsbeispielen können Informationen über Eingangsmerkmale mit einem Wert ungleich null eine Ungleich-null-Merkmalsliste in Bezug auf jeden Eingangsmerkmalsbalken einschließen, die einen Ungleich-null-Merkmalswert und/oder einen Kanal mit dem Ungleich-null-Merkmalswert (z.B. eine Position des Ungleich-null-Merkmalswerts auf einem Eingangsmerkmalsbalken) einschließt. Der Controller 135 kann dafür ausgelegt sein, die Eingangsmerkmale jedes Eingangsmerkmalsbalkens für jeden von den Eingangsmerkmalsbalken zu erzeugen und/oder die Informationen für einen Eingangsmerkmalsbalken an einem Verarbeitungselement PE bereitstellen, welches das Skalarprodukt an dem Eingangsmerkmalsbalken durchführt. In manchen Ausführungsbeispielen können die Informationen über Eingangsmerkmale mit einem Wert ungleich null eine Null-Merkmalsmaske (oder einen Vektor) einschließen, wo in Bezug auf jeden Eingangsmerkmalsbalken ein Kanal mit dem Wert gleich null als „0“ ausgedrückt wird und/oder ein Kanal mit einem Wert ungleich null als „1“ ausgedrückt wird. Die Informationen über Gewichtungen mit einem Wert ungleich null können eine Ungleich-null-Gewichtungsliste ähnlich der oben beschriebenen Ungleich-null-Merkmalsliste oder eine Null-Gewichtungsmaske ähnlich der oben beschriebenen Null-Merkmalsmaske einschließen.
  • In manchen Ausführungsbeispielen kann der Controller 135 dafür ausgelegt sein, einen Anteil von Merkmalswerten mit einem Wert ungleich null an einer transformierten Eingangsmerkmalskarte und/oder einen Anteil von Gewichtungen mit einem Wert ungleich null an einem transformierten Gewichtungskernel zu berechnen und/oder kann dafür ausgelegt sein, auf Basis des berechneten Anteils (der berechneten Anteile) zu bestimmen, ob während eines Skalarprodukts ein Zero-Skipping angewendet werden soll.
  • In manchen Ausführungsbeispielen kann der Controller 135 durch Hardware, Software (oder Firmware) oder eine Kombination aus Hardware und Software implementiert werden. In manchen Ausführungsbeispielen kann der Controller 135 als Hardware-Logik implementiert werden, die dafür entworfen ist, die oben beschriebenen Funktionen durchzuführen. In manchen Ausführungsbeispielen kann der Controller 135 mindestens einen Prozessor, wie etwa eine CPU oder einen Mikroprozessor, aufweisen und/oder kann dafür ausgelegt sein, ein in den RAM 136 geladenes Programm auszuführen. Das Programm kann Befehle einschließen, die manche oder alle von den hierin beschriebenen Funktionen konfigurieren.
  • Der RAM 136 kann DRAM oder SRAM einschließen. Der RAM 136 kann verschiedene Arten von Programmen und/oder Daten für den Controller 135 speichern und/oder Daten speichern, die in dem Controller 135 erzeugt werden.
  • 7 ist ein Diagramm zur Erläuterung der Funktionsweise der Rechenschaltung 131 gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Die Funktionsweise der Rechenschaltung 131 von 7 wird unter Bezugnahme auf 5 und 7 beschrieben.
  • Wie in 7 gezeigt ist, kann die Recheneinheit 131 eine Mehrzahl von Verarbeitungselementen, beispielsweise ein erstes bis 32tes Verarbeitungselement PE0 bis PE31 aufweisen. Jedes vom ersten bis 32ten Verarbeitungselement PE0 bis PE31 kann dafür ausgelegt sein, ein Skalarprodukt an einem Merkmalsbalken und/oder einem Gewichtungsbalken durchzuführen. In diesem Beispiel, und wie oben unter Bezugnahme auf 5 beschrieben, kann jede(r) von der transformierten Eingangsmerkmalskarte WIFM und/oder dem ersten und/oder dem zweiten transformierten Gewichtungskernel WWK0 und/oder WWK1 sechzehn Balken (wie etwa den ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 oder den ersten bis sechzehnten Gewichtungsbalken WB0 bis WB15) aufweisen. Die Produkte zwischen dem ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 und dem ersten bis sechzehnten Gewichtungsbalken WB0 bis WB15 von jedem von dem ersten und/oder zweiten transformierten Gewichtungskernel WWK0 und/oder WWK1 können von dem ersten bis 32ten Verarbeitungselement PE0 bis PE31 durchgeführt werden. Zum Beispiel kann das erste Verarbeitungselement PE0 dafür ausgelegt sein, ein Skalarprodukt an dem ersten Merkmalsbalken FB0 und/oder einem ersten Gewichtungsbalken WBO0 des ersten transformierten Gewichtungskernel WWK0 durchzuführen. Anders ausgedrückt kann das erste Verarbeitungselement PE0 dafür ausgelegt sein, Multiplikationen sequentiell und/oder Kanal für Kanal an dem ersten Merkmalsbalken FB0 und/oder dem ersten Gewichtungsbalken WBO0 des ersten transformierten Gewichtungskernels WWK0 durchzuführen und/oder die Multiplikationsergebnisse zu addieren. Das zweite Verarbeitungselement PE1 kann ein Skalarprodukt an dem zweiten Merkmalsbalken FB1 und/oder einem zweiten Gewichtungsbalken WB10 des ersten transformierten Gewichtungskernel WWK0 durchführen.
  • Wie in 7 gezeigt ist, können das erste bis sechzehnte Verarbeitungselement PE0 bis PE15 dafür ausgelegt sein, entsprechende Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WBO0 bis WB150 des ersten transformierten Gewichtungskernel WWK0 durchzuführen. Ebenso können das erste bis 32te Verarbeitungselement PE16 bis PE31 dafür ausgelegt sein, entsprechende Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WB01 bis WB151 des zweiten transformierten Gewichtungskernel WWK1 durchzuführen. Jedoch müssen manche Beispiele für die erfinderischen Gedanken nicht darauf beschränkt sein. Zum Beispiel können in manchen Ausführungsbeispielen ein erstes bis sechzehntes Verarbeitungselement PE0 bis PE15 dafür ausgelegt sein, entsprechende Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WBO0 bis WB150 des ersten transformierten Gewichtungskernel WWK0 durchzuführen und/oder entsprechende Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WB01 bis WB151 des zweiten transformierten Gewichtungskernel WWK1 durchzuführen.
  • In manchen Ausführungsbeispielen können das erste bis 32te Verarbeitungselement PE0 bis PE31 dafür ausgelegt sein, unabhängig voneinander zu operieren und/oder jedes Skalarprodukt jeweils für sich und/oder simultan mit anderen von den anderen Verarbeitungselementen durchzuführen, so dass Skalarprodukte in Bezug auf den ersten bis sechzehnten Merkmalsbalken FB0 bis FB15 parallel durchgeführt werden können. In manchen Ausführungsbeispielen können Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WBO0 bis WB150 des ersten transformierten Gewichtungskernel WWK0 und/oder Skalarprodukte in Bezug auf den ersten bis sechzehnten Gewichtungsbalken WB01 bis WB151 des zweiten transformierten Gewichtungskernel WWK1 parallel durchgeführt werden.
  • 8 ist ein Schaltplan eines Verarbeitungselements PEa gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Wie in 8 gezeigt ist, kann das Verarbeitungselement PEa einen Multiplikator 1a, einen Addierer 2a und/oder ein Register 3a aufweisen. Der Multiplikator 1a kann dafür ausgelegt sein, einen Merkmalswert „f“ mit einem Gewicht „w“ zu multiplizieren. Der Addierer 2a kann dafür ausgelegt sein, ein Multiplikationsergebnis zu einem Wert R zu addieren, der im Register 3a gespeichert ist, und/oder ein Additionsergebnis im Register 3a zu speichern. Unter der Bedingung, dass ein Merkmalsbalken FB einen ersten bis achten Merkmalswert f0 bis f7 aufweist, die einem ersten bis achten Kanal entsprechen, und/oder unter der Bedingung, dass ein Gewichtungsbalken WB ein erstes bis achtes Gewicht w0 bis w7 aufweist, die dem ersten bis achten Kanal entsprechen, können der erste bis achte Merkmalswert f0 bis f7 sequentiell am Multiplikator 1a bereitgestellt werden und/oder können das erste bis achte Gewicht w0 bis w7 sequentiell am Multiplikator 1a bereitgestellt werden, so dass ein Skalarprodukt, wie etwa eine kanalweise Multiplikation und/oder eine kanalweise Addition, sequentiell am Merkmalsbalken Fb und/oder am Gewichtungsbalken WB durchgeführt werden kann.
  • 9 bis 11 sind Diagramme von Beispielen für Zero-Skipping gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Zero-Skipping kann angewendet werden, wenn ein Skalarprodukt von den Verarbeitungselementen PEa von 8 durchgeführt wird.
  • In manchen Ausführungsbeispielen, und wie in 9 gezeigt, kann Zero-Skipping auf Basis von Merkmalswerten des Merkmalsbalkens FB angewendet werden. In manchen Fällen können manche Merkmalswerte des Merkmalsbalkens FB einen Wert gleich null aufweisen und/oder andere seiner Werte können einen Wert ungleich null aufweisen. Zum Beispiel können jeweilige Merkmalswerte eines ersten Kanals CH0, eines vierten Kanals CH3, eines sechsten Kanals CH5 und/oder eines achten Kanals CH7 einen Wert ungleich null aufweisen und/oder jeweilige Merkmalswerte eines zweiten Kanals CH1, eines dritten Kanals CH2, eines fünften Kanals CH4 und/oder eines siebten Kanals CH6 können einen Wert gleich null aufweisen. Ein Skalarprodukte in Bezug auf den Gewichtungsbalken WB0 eines ersten transformierten Gewichtungskernel und/oder ein Skalarprodukte in Bezug auf den Gewichtungsbalken WB1 eines zweiten transformierten Gewichtungskernel kann/können von zwei Verarbeitungselementen PEa jeweils parallel oder von einem einzigen Verarbeitungselement PEa hintereinander durchgeführt werden. Jedes Verarbeitungselement PEa kann dafür ausgelegt sein, eine kanalweise Multiplikation und/oder eine kanalweise Addition auf Basis eines Taktsignals sequentiell durchzuführen. Gemäß manchen Ausführungsbeispielen kann das Verarbeitungselement PEa dafür ausgelegt sein, eine kanalweise Multiplikation auf Basis der Merkmalswerte, die einen Wert ungleich null aufweisen, durchzuführen und/oder die kanalweise Multiplikation in Bezug auf die Merkmalswerte, die einen Wert gleich null aufweisen, zu überspringen. Wie in 9 gezeigt ist, kann somit während eines ersten bis vierten Zyklus CCLE0 bis CYCLE3 die kanalweise Multiplikation in Bezug auf die Null-Merkmalswerte des zweiten, des dritten, des fünften und/oder des siebten Kanals CH1, CH2, CH4 und/oder CH6 übersprungen werden und/oder die kanalweise Multiplikation in Bezug auf Ungleich-null-Merkmalswerte des ersten, des vierten, des sechsten und/oder des achten Kanals CH0, CH3, CH5 und/oder CH7 kann sequentiell durchgeführt werden.
  • Wie in 10A und 10B gezeigt ist, kann ein Zero-Skipping auf Basis von Gewichtungen der Gewichtungsbalken WB0 und/oder WB1 verwendet werden. Manche Gewichtungen der Gewichtungsbalken WB0 und/oder WB1 können einen Wert gleich null aufweisen und/oder andere seiner/ihrer Gewichtungen können einen Wert ungleich null aufweisen. Zum Beispiel können in dem Gewichtungsbalken WB0 des ersten transformierten Gewichtungskernel jeweilige Gewichtungen des ersten Kanals CH0, des zweiten Kanals CH1 und/oder des fünften Kanals CH4 einen Wert ungleich null aufweisen und/oder jeweilige Gewichtungen des dritten Kanals CH2, des vierten Kanals CH3, des sechsten Kanals CH5, des siebten Kanals CH6 und/oder des achten Kanals CH7 können einen Wert gleich null aufweisen. Im Gewichtungsbalken WB1 des zweiten transformierten Gewichtungskernel können jeweilige Gewichtungen des zweiten Kanals CH2, des fünften Kanals CH4 und/oder des achten Kanals CH7 einen Wert ungleich null aufweisen und/oder jeweilige Gewichtungen des ersten Kanals CH0, des dritten Kanals CH2, des sechsten Kanals CH5 und/oder des siebten Kanals CH6 können einen Wert gleich null aufweisen. Das Verarbeitungselement PEa kann dafür ausgelegt sein, eine kanalweise Multiplikation auf Basis der Gewichtungen, die einen Wert ungleich null aufweisen, durchzuführen und/oder die kanalweise Multiplikation in Bezug auf die Gewichtungen, die einen Wert gleich null aufweisen, zu überspringen.
  • Wie in 10A gezeigt ist, kann während des ersten bis dritten Zyklus CYCLEO bis CYCLE2, wenn ein Skalarprodukte in Bezug auf den Gewichtungsbalken WB0 des ersten transformierten Gewichtungskernel durchgeführt wird, eine kanalweise Multiplikation in Bezug auf die Null-Gewichtungen des dritten, vierten, sechsten, siebten und/oder achten Kanals CH2, CH3, CH5, CH6 und/oder CH7 übersprungen werden und/oder es können kanalweise Multiplikationen in Bezug auf Ungleich-null-Gewichtungen des ersten, zweiten und/oder fünften Kanals CH0, CH1 und/oder CH4 durchgeführt werden. Wenn ein Skalarprodukt in Bezug auf den Gewichtungsbalken WB1 des zweiten transformierten Gewichtungskernel durchgeführt wird, kann während des ersten bis vierten Zyklus CYCLE0 bis CYCLE3 eine kanalweise Multiplikation in Bezug auf die Null-Gewichtungen des ersten, dritten, sechsten und/oder siebten Kanals CH0, CH2, CH5 und/oder CH6 durchgeführt werden und/oder es können kanalweise Multiplikationen in Bezug auf Ungleich-null-Gewichtungen des zweiten, vierten, fünften und/oder achten Kanals CH1, CH3, CH4 und/oder CH7 durchgeführt werden.
  • Wie in 10B dargestellt ist, kann eine kanalweise Multiplikation in Bezug auf die Null-Gewichtungen sowohl im Gewichtungsbalken WB0 des ersten transformierten Gewichtungskernel als auch im Gewichtungsbalken WB1 des zweiten transformierten Gewichtungskernel übersprungen werden. Demgemäß kann während des ersten bis vierten Zyklus CYCLEO bis CYCLE4 eine kanalweise Multiplikation in Bezug auf den dritten, sechsten und/oder siebten Kanal CH2, CH5 und/oder CH6 übersprungen werden und/oder kanalweise Multiplikationen können sequentiell in Bezug auf den ersten, zweiten, vierten, fünften und/oder achten Kanal CH0, CH1, CH3, CH4 und/oder CH7 durchgeführt werden.
  • Wie in 11 gezeigt ist, kann auf Basis der Merkmalswerte des Merkmalsbalkens FB und/oder der Gewichtungen der Gewichtungsbalken WB0 und/oder WB1 ein Zero-Skipping durchgeführt werden. Zum Beispiel können die jeweiligen Merkmalswerte des ersten, vierten, sechsten und/oder achten Kanals CH0, CH3, CH5 und/oder CH7 einen Wert ungleich null aufweisen, und die jeweiligen Merkmalswerte des zweiten, dritten, fünften und/oder sechsten Kanals CH1, CH2, CH4 und/oder CH6 können einen Wert gleich null aufweisen. Im Gewichtungsbalken WB0 des ersten transformierten Gewichtungskernel können die jeweiligen Gewichtungen des ersten, zweiten und/oder fünften Kanals CH0, CH1 und/oder CH4 einen Wert ungleich null aufweisen, und/oder die jeweiligen Gewichtungen des dritten, vierten, sechsten, siebten und/oder achten Kanals CH2, CH3, CH5, CH6 und/oder CH7 können einen Wert gleich null aufweisen. Im Gewichtungsbalken WB1 des zweiten transformierten Gewichtungskernel können jeweilige Gewichtungen des zweiten, vierten, fünften und/oder achten Kanals CH1, CH3, CH4 und/oder CH7 einen Wert ungleich null aufweisen und/oder jeweilige Gewichtungen des ersten, dritten, sechsten und/oder siebten Kanals CH0, CH2, CH5 und/oder CH6 können einen Wert gleich null aufweisen. Demgemäß kann das Verarbeitungselement PEa dafür ausgelegt sein, eine kanalweise Multiplikation in Bezug auf den zweiten, dritten, fünften und/oder siebten Kanal CH1, CH2, CH4 und/oder CH6 zu überspringen. Das Verarbeitungselement PEa kann auch dafür ausgelegt sein, eine kanalweise Multiplikation in Bezug auf den sechsten Kanal CH5, der sowohl im Gewichtungsbalken WB0 des ersten transformierten Gewichtungskernel als auch im Gewichtungsbalken WB1 des zweiten transformierten Gewichtungskernel eine Gewichtung gleich null aufweist, zu überspringen. Somit können kanalweise Multiplikationen während des ersten bis dritten Zyklus CYCLEO bis CYCLE2 jeweils in Bezug auf den ersten, vierten und/oder achten Kanal CH0, CH3 und/oder CH7 durchgeführt werden.
  • In manchen Ausführungsbeispielen und wie in 9 bis 11 gezeigt, kann das Verarbeitungselement PEa dafür ausgelegt sein, Informationen (z.B. eine Ungleich-null-Merkmalsliste oder eine Null-Merkmalsmaske) über Eingangsmerkmale mit einem Wert ungleich null unter den Merkmalswerten des Merkmalsbalkens FB und/oder Informationen über Gewichtungen mit einem Wert ungleich null unter den Gewichtungen der Gewichtungsbalken WB0 und/oder WB1 zu empfangen und/oder können dafür ausgelegt sein, kanalweise Multiplikationen auf Basis der Merkmalswerte mit einem Wert ungleich null und/oder der Gewichtungen mit einem Wert ungleich null auf Basis der empfangenen Informationen durchzuführen. In manchen Ausführungsbeispielen kann das Verarbeitungselement PEa dafür ausgelegt sein, die Informationen über Eingangsmerkmale mit einem Wert ungleich null und/oder die Informationen über Gewichtungen mit einem Wert ungleich null vom Controller 135 in 6 zu empfangen.
  • 12A und 12B sind Diagramme von Informationen über Eingangsmerkmale mit einem Wert ungleich null gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Wie in 12A gezeigt ist, können die Informationen über Eingangsmerkmale mit einem Wert ungleich null eine Ungleich-null-Merkmalsliste LT einschließen. Die Ungleich-null-Merkmalsliste LT kann Kanäle CH, beispielsweise den ersten Kanal CH0, den vierten Kanal CH3, den sechsten Kanal CH5 und/oder den achten Kanal CH7, die jeweils einen Merkmalswert ungleich null im Merkmalsbalken FB aufweisen, und/oder Merkmalswerte FV ungleich null, beispielsweise einen ersten Merkmalswert fa, einen vierten Merkmalswert fb, einen sechsten Merkmalswert fc und/oder einen achten Merkmalswert fd, die den Kanälen CH entsprechen, einschließen.
  • Wie in 12B gezeigt ist, können die Informationen über Eingangsmerkmale mit einem Wert ungleich null eine gewichtete Merkmalsmaske MK einschließen. Die gewichtete Merkmalsmaske MK kann einen Wert einschließen, der angibt, ob die einzelnen Kanäle des Merkmalsbalkens FB einen Merkmalswert ungleich null oder einen Merkmalswert gleich null aufweisen. Zum Beispiel kann ein Kanal mit einem Wert gleich null als „0“ ausgedrückt werden und/oder ein Kanal mit einem Wert ungleich null kann als „1“ ausgedrückt werden.
  • Dabei kann das Verarbeitungselement PEa dafür ausgelegt sein, Informationen (z.B. eine Ungleich-null-Merkmalsliste oder eine Ungleich-null-Merkmalsmaske) über Eingangsmerkmale mit einem Wert ungleich null unter den Merkmalswerten des Merkmalsbalkens FB zu empfangen. Auf Basis der Informationen kann das Verarbeitungselement PEa dafür ausgelegt sein, auf Basis der empfangenen Informationen kanalweise Multiplikationen auf Basis der Merkmalswerte mit einem Wert ungleich null durchzuführen und/oder eine kanalweise Multiplikation in Bezug auf Merkmalswerte, die einen Wert gleich null aufweisen, zu überspringen. Zum Beispiel kann das Verarbeitungselement PEa dafür ausgelegt sein, die Informationen über Eingangsmerkmale mit einem Wert ungleich null vom Controller 135 in 6 zu empfangen.
  • 13 ist ein Schaltplan eines Verarbeitungselements PEb gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Wie in 13 gezeigt ist, kann das Verarbeitungselement PEb eine Mehrzahl von Multiplikatoren 1b1 bis 1b4 , einen Addierer 2b und/oder ein Register 3b einschließen. Die Multiplikatoren 1b1 bis 1b4 können dafür ausgelegt sein, eine Multiplikation an Merkmalswerten f0 bis f3 mit Gewichtungen w0 bis w3 durchzuführen. Der Addierer 2b kann dafür ausgelegt sein, Multiplikationsergebnisse, die jeweils von den Multiplikatoren 1b1 bis 1b4 empfangen werden, zu addieren und/oder ein Additionsergebnis im Register 3b zu speichern. Auch wenn das Verarbeitungselement PEb in 13 vier Multiplikatoren 1b1 bis 1b4 einschließt, müssen manche Beispiele für den erfinderischen Gedanken mancher Ausführungsbeispiele nicht darauf beschränkt sein. Zum Beispiel kann in manchen Ausführungsbeispielen eine Zahl der Multiplikatoren geändert werden.
  • Wenn die Zahl der Multiplikatoren 1b1 bis 1b4 kleiner ist als die Zahl von Kanälen eines Merkmalsbalkens, in Bezug auf den das Verarbeitungselement PEb ein Skalarprodukt durchführt, kann/können in manchen Ausführungsbeispielen eine Multiplikation jedes der Multiplikatoren 1b1 bis 1b4 und/oder eine Addition des Addierers 2b mehrmals wiederholt werden. Der Addierer 2b kann dafür ausgelegt sein, Multiplikationsergebnisse zu addieren und/oder Multiplikationsergebnisse zu einem früheren Additionsergebnis R, das im Register 3b gespeichert ist, zu addieren und/oder ein Additionsergebnis im Register 3b zu speichern. Wenn zum Beispiel das Verarbeitungselement PEb vier Multiplikatoren 1b1 bis 1b4 aufweist und/oder ein Merkmalsbalken acht Kanäle einschließt, dann können die vier Multiplikatoren 1b1 bis 1b4 dafür ausgelegt sein, kanalweise Multiplikationen jeweils an Merkmalswerten und/oder Gewichtungen des ersten bis vierten Kanals in einem ersten Zyklus durchzuführen. Der Addierer 2b kann dafür ausgelegt sein, Werte, die jeweils von den Multiplikatoren 1b1 bis 1b4 empfangen werden, zu addieren und/oder ein Additionsergebnis im Register 3b zu speichern. Die vier Multiplikatoren 1b1 bis 1b4 können dafür ausgelegt sein, danach in einem zweiten Zyklus jeweils kanalweise Multiplikationen an Merkmalswerten und/oder Gewichtungen eines fünften bis achten Kanals durchzuführen. Der Addierer kann dafür ausgelegt sein, Werte, die jeweils von den vier Multiplikatoren 1b1 bis 1b4 empfangen werden, zu addieren und/oder Werte, die jeweils von den vier Multiplikatoren 1b1 bis 1b4 empfangen werden, zum früheren Additionsergebnis R, das im Register 3b gespeichert ist, zu addieren und/oder ein Additionsergebnis im Register 3b zu speichern.
  • In manchen Ausführungsbeispielen kann/können der Aufbau des Verarbeitungselements PEb von 13 und/oder der Aufbau des Verarbeitungselements PEa von 8 auf eine Rechenschaltung, beispielsweise die Verarbeitungselemente PE der Rechenschaltung 131 von 6, angewendet werden. Anders ausgedrückt können manche von den Verarbeitungselementen PE der Rechenschaltung 131 in 6 den Aufbau des Verarbeitungselements PEa von 8 aufweisen, und manche können den Aufbau des Verarbeitungselements von 13 aufweisen.
  • 14 ist ein Blockdiagramm eines Verfahrens zum Betreiben einer Neuronalnetz-Verarbeitungsschaltung gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. In manchen Ausführungsbeispielen kann das Verfahren von 14 durch eine Neuronalnetz-Verarbeitungsschaltung 130a durchgeführt werden.
  • Wie in 14 gezeigt ist, kann die Neuronalnetz-Verarbeitungsschaltung 130a in einer Operation S210 den Anteil von Gewichtungen mit einem Wert gleich null an einem transformierten Gewichtungskernel berechnen. Zum Beispiel kann ein Controller 135 dafür ausgelegt sein, das Verhältnis der Zahl von Gewichtungen mit einem Wert gleich null zu der Zahl aller Gewichtungen des transformierten Gewichtungskernel, die im Gewichtungspufferspeicher 132 gespeichert sind, zu berechnen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130a in einer Operation S220 bestimmen, ob der errechnete Anteil kleiner ist als ein Referenzwert. Zum Beispiel kann ein Referenzwert auf Basis der Zahl von Verarbeitungselementen PE, die in der Rechenschaltung 131 enthalten sind, einer Schaltungsgröße und so weiter identifiziert (zum Beispiel voreingestellt) werden.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130a dafür ausgelegt sein, in einer Operation S230 zu bestimmen, dass das Zero-Skipping während eines Skalarprodukts eines Merkmalsbalkens und/oder eines Gewichtungsbalkens verwendet wird, wenn ein Anteil nicht kleiner ist als ein Referenzwert, das heißt wenn der Anteil mindestens so groß ist wie der Referenzwert. Jedoch kann die Neuronalnetz-Verarbeitungsschaltung 130a dafür ausgelegt sein, in einer Operation S240 zu bestimmen, dass das Zero-Skipping während eines Skalarprodukts eines Merkmalsbalkens und/oder eines Gewichtungsbalkens nicht verwendet wird, wenn der Anteil kleiner ist als der Referenzwert.
  • In manchen Ausführungsbeispielen kann Zero-Skipping verwendet werden, wenn elementweise Multiplikationen in Bezug auf die Kanäle sequentiell durchgeführt werden, wenn ein Verarbeitungselement PE ein Skalarprodukt an einem Merkmalsbalken und/oder einem Gewichtungsbalken durchführt. Wenn ein Skalarprodukt von den Verarbeitungselementen PEa von 8 durchgeführt wird, kann demgemäß das Zero-Skipping angewendet werden. Das Verarbeitungselement PEb von 13 kann dafür ausgelegt sein, kanalweise Multiplikationen jeweils für sich und/oder simultan in Bezug auf eine Mehrzahl von Kanälen durchzuführen, und demgemäß kann die Anwendung von Zero-Skipping erschwert sein. Jedoch kann die Zahl der Speicherungen von Additionsergebnissen im Register 3b während eines Skalarprodukts durch das Verarbeitungselement PEb von 13 deutlich kleiner sein als die Zahl der Speicherungen von Additionsergebnissen im Register 3a während eines Skalarprodukts durch das Verarbeitungselement PEa von 8.
  • Im Falle des Skalarprodukts durch das Verarbeitungselement PEa von 8 kann die Zahl der Speicherungen von Additionsergebnissen im Register 3a umso größer sein, je kleiner die Zahl der Multiplikation ist, die in Bezug auf einen Kanal übersprungen werden. Somit kann ein Inkrement im Leistungsverbrauch, das durch Speichern von Additionsergebnissen im Register 3a bewirkt wird, relativ größer sein als ein Dekrement im Leistungsverbrauch durch Zero-Skipping. Demgemäß kann die Neuronalnetz-Verarbeitungsschaltung 130a dafür ausgelegt sein, zu bestimmen, dass Zero-Skipping während eines Skalarprodukts zwischen einem Merkmalsbalken und einem Gewichtungsbalken nicht angewendet wird, wenn der Anteil von Gewichtungen mit einem Wert gleich null kleiner ist als der Referenzwert, und/oder sie kann die Rechenschaltung 131 so steuern, dass das Skalarprodukt im Verarbeitungselement PEb von 13 durchgeführt wird. Wie in manchen hierin vorgelegten Ausführungsbeispielen beschrieben ist, kann eine Neuronalnetz-Verarbeitungsschaltung 130a, die dafür ausgelegt ist, Zero-Skipping auf Basis des Anteils der Gewichtungen mit einem Wert gleich null anzuwenden oder nicht anzuwenden, einen verringerten Leistungsverbrauch bei der Verarbeitung einer Faltungsoperation eines neuronalen Netzes zeigen.
  • In manchen Ausführungsbeispielen, und wie in 14 gezeigt ist, kann die Neuronalnetz-Verarbeitungsschaltung 130a dafür ausgelegt sein, auf Basis des Anteils von Gewichtungen mit einem Wert gleich null zu bestimmen, ob ein Zero-Skipping angewendet wird. Jedoch müssen manche Ausführungsbeispiele mancher erfinderischer Gedanken nicht auf die Beispiele von 14 beschränkt sein. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 130a in manchen Ausführungsbeispielen dafür ausgelegt sein, den Anteil von Merkmalswerten gleich null an einer transformierten Eingangsmerkmalskarte zu berechnen und/oder auf Basis des berechneten Anteils zu bestimmen, ob ein Zero-Skipping angewendet werden soll. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 130a dafür ausgelegt sein, während eines Skalarprodukts zwischen einem Merkmalsbalken und einem Gewichtungsbalken kein Zero-Skipping anzuwenden, wenn der Anteil von Merkmalswerten mit einem Wert gleich null kleiner ist als ein Referenzwert.
  • 15 ist ein Blockdiagramm einer integrierten Schaltung und einer Vorrichtung, die diese enthält, gemäß manchen Ausführungsbeispielen mancher erfinderischer Gedanken. Wie in 15 gezeigt ist, kann eine Vorrichtung 2000 eine integrierte Schaltung 1000 und/oder Elemente, beispielsweise einen Sensor 1510, eine Anzeigevorrichtung 1610, einen Speicher 1710, die mit der integrierten Schaltung 1000 verbunden sind, aufweisen. Die Vorrichtung 2000 kann dafür ausgelegt sein, Daten unter Beteiligung eines neuronalen Netzes zu verarbeiten.
  • Die integrierte Schaltung 1000 kann eine CPU 1100, einen RAM 1200, eine GPU 1300, eine Neuronalnetz-Verarbeitungsschaltung 1400, eine Sensorschnittstelle (I/F) 1500, eine Anzeigeschnittstelle 1600 und/oder eine Speicherschnittstelle 1700 aufweisen. Die integrierte Schaltung 1000 kann ferner andere Elemente, wie etwa ein Kommunikationsmodul, einen DSP und/oder ein Videomodul aufweisen. Manche oder alle von den Elementen der integrierten Schaltung 1000, wie etwa die CPU 1100, der RAM 1200, die GPU 1300, die Neuronalnetz-Verarbeitungsschaltung 1400, die Sensorschnittstelle 1500, die Anzeigeschnittstelle 1600 und/oder die Speicherschnittstelle 1700, können dafür ausgelegt sein, über einen Bus 1800 Daten miteinander auszutauschen. In manchen Ausführungsbeispielen kann die integrierte Schaltung 1000 einen Anwendungsprozessor aufweisen. In manchen Ausführungsbeispielen kann die integrierte Schaltung 1000 als System-on-Chip (SoC) implementiert sein.
  • In manchen Ausführungsbeispielen kann die CPU 1100 so konfiguriert sein, dass sie manche oder alle Operationen der integrierten Schaltung 1000 steuert. Die CPU 1100 kann einen einzelnen Kern oder mehrere Kerne aufweisen. Die CPU 1100 kann so konfiguriert sein, dass sie Programme und/oder Daten, die im Speicher 1710 gespeichert sind, verarbeitet oder ausführt. In manchen Ausführungsbeispielen kann die CPU 1100 dafür ausgelegt sein, die Funktionen der Neuronalnetz-Verarbeitungsschaltung 1400 durch Ausführen von Programmen, die im Speicher 1710 gespeichert sind, zu steuern.
  • In manchen Ausführungsbeispielen kann der RAM 1200 dafür ausgelegt sein, Programme, Daten und/oder Befehle zeitweise (z.B. auf flüchtige Weise) und/oder dauerhaft (z.B. auf nichtflüchtige Weise) zu speichern. In manchen Ausführungsbeispielen kann der RAM 1200 einen DRAM oder einen SRAM einschließen. Der RAM 1200 kann dafür ausgelegt sein, Daten, wie etwa Bilddaten, zeitweise (z.B. auf flüchtige Weise) und/oder dauerhaft (z.B. auf nichtflüchtige Weise) zu speichern. Die vom RAM 1200 gespeicherten Daten können über Schnittstellen, wie etwa die Sensorschnittstelle 1500 und/oder die Anzeigeschnittstelle 1600 eingegeben und/oder ausgegeben werden und/oder können in der GPU 1300 oder der CPU 1100 erzeugt werden.
  • In manchen Ausführungsbeispielen kann die integrierte Schaltung 1000 ferner einen ROM aufweisen. Der ROM kann dafür ausgelegt sein, Programme und/oder Daten zu speichern, die kontinuierlich verwendet werden können. Der ROM kann EPROM und/oder EEPROM einschließen.
  • In manchen Ausführungsbeispielen kann die GPU 1300 dafür ausgelegt sein, eine Bildverarbeitung an Bilddaten durchzuführen. Zum Beispiel kann die GPU 1300 dafür ausgelegt sein, eine Bildverarbeitung an Bilddaten durchzuführen, die über die Sensorschnittstelle 1500 empfangen werden. Die Bilddaten, die von der GPU 1300 verarbeitet werden, können im Speicher 1710 gespeichert werden und/oder über die Anzeigeschnittstelle 1600 an der Anzeigevorrichtung 1610 bereitgestellt werden. Die Bilddaten, die im Speicher 1710 gespeichert werden, können an der Neuronalnetz-Verarbeitungsschaltung 1400 bereitgestellt werden.
  • In manchen Ausführungsbeispielen kann die Sensorschnittstelle 1500 dafür ausgelegt sein, Daten (z.B. Bilddaten, Audiodaten usw.), die von dem mit der integrierten Schaltung 1000 verbundenen Sensor 1510 eingegeben werden, weiterzugeben.
  • In manchen Ausführungsbeispielen kann die Anzeigeschnittstelle 1600 als Schnittstelle für Daten (z.B. ein Bild), die an die Anzeigevorrichtung 1610 ausgegeben werden, ausgelegt sein. Die Anzeigevorrichtung 1610 kann dafür ausgelegt sein, ein Bild oder Daten über das Bild über eine Anzeige, wie etwa eine Flüssigkristallanzeige (LCD) oder eine Anzeige auf Basis einer organischen Aktivmatrix-Leuchtdiode (AMOLED) auszugeben.
  • In manchen Ausführungsbeispielen kann die Speicherschnittstelle 1700 als Schnittstelle für Daten, die von einem Speicher 1710 außerhalb der integrierten Schaltung 1000 eingegeben werden, und/oder Daten, die an den Speicher 1710 ausgegeben werden, ausgelegt sein. In manchen Ausführungsbeispielen kann der Speicher 1710 einen flüchtigen Speicher, wie etwa einen DRAM oder SRAM, oder einen nichtflüchtigen Speicher, wie etwa einen ReRAM, einen PRAM oder einen NAND-Flash-Speicher einschließen. Der Speicher 1710 kann als Speicherkarte, wie etwa als Multimediakarte (MMC), als eingebettete MMC (eMMC), als Secure Digital (SD)-Karte oder als Mikro-SD-Karte implementiert sein.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, eine Faltungsoperation auf Basis einer Winograd-Transformation, wie sie hierin unter Bezugnahme auf eine oder mehrere von 1 bis 13 beschrieben ist, durchzuführen. In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, durch Durchführen einer Winograd-Transformation an einer Eingangsmerkmalskarte und/oder einer Mehrzahl von Gewichtungskernels auf einer Convolution Layer und/oder durch Durchführen einer elementweisen Multiplikation an einer transformierten Eingangsmerkmalskarte und/oder einer Mehrzahl von transformierten Gewichtungskernels in einer Winograd-Domäne eine Faltungsoperation durchzuführen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, die elementweise Multiplikation an der transformierten Eingangsmerkmalskarte und/oder den transformierten Gewichtungskernels durch Durchführen einer elementweisen Multiplikation in Bezug auf jeden Balken (z.B. einen Merkmalsbalken oder einen Gewichtungsbalken) durchzuführen, was entsprechende Elemente über einer Mehrzahl von Kanälen (d.h. Merkmalswerte oder Gewichtungen an einer gleichen Position in Matrizen) beinhaltet, und/oder Multiplikationsergebnisse zu addieren. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, ein Skalarprodukt an einem Merkmalsbalken der transformierten Eingangsmerkmalskarte und/oder einem Gewichtungsbalken von jedem der transformierten Gewichtungskernels durchzuführen und/oder Skalarprodukte zwischen Merkmalsbalken und Gewichtungsbalken parallel Balken für Balken (zum Beispiel Element für Element in Matrizen) durchzuführen.
  • In manchen Ausführungsbeispielen kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, eine Operation in Bezug auf Merkmalswerte und/oder Gewichtungen in der Kanalrichtung sequentiell durchzuführen. Zum Beispiel kann die Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, eine Multiplikation zwischen einem Merkmalswert und einem Gewicht in Bezug auf einen Kanal, für den der Merkmalswert und/oder das Gewicht einen Wert gleich null hat/haben, zu überspringen. Anders ausgedrückt kann in Bezug auf einen Merkmalswert oder eine Gewichtung während der Operation der Neuronalnetz-Verarbeitungsschaltung 1400 Zero-Skipping angewendet werden.
  • In manchen Ausführungsbeispielen kann eine Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, auf Basis des Anteils der einen Wert gleich null aufweisenden Merkmale an einer Eingangsmerkmalskarte oder des Anteils der einen Wert gleich null aufweisenden Gewichtungen an Gewichtungskernels zu bestimmen, ob oder ob nicht das Zero-Skipping angewendet werden soll. Wenn der Anteil von Merkmalen mit dem Wert gleich null beispielsweise niedriger ist als ein Referenzwert, könnte ein Zero-Skipping nicht angewendet werden.
  • In manchen Ausführungsbeispielen können manche Funktionen einer Neuronalnetz-Verarbeitungsschaltung 1400 von anderen Komponenten einer Neuronalnetzvorrichtung, wie etwa einer CPU 1100 oder einer GPU 1300, durchgeführt werden. Mindestens einer von anderen Prozessen als Skalarprodukten zwischen Merkmalsbalken und Gewichtungsbalken, beispielsweise eine Gewichtungskernel-Vorverarbeitung (zum Beispiel eine Winograd-Transformation und/oder Umformatierung zu Gewichtungsbalken), eine Winograd-Transformation einer Eingangsmerkmalskarte, eine Rück-Umformatierung von Skalarproduktergebnissen und/oder eine Winograd-Rücktransformation einer Ausgangsmerkmalskarte, die ein Ergebnis einer Rück-Umformatierung in einer Winograd-Domäne ist, können von einem anderen Prozessor durchgeführt werden.
  • Gemäß manchen Ausführungsbeispielen kann eine Neuronalnetz-Verarbeitungsschaltung 1400 dafür ausgelegt sein, eine Faltungsoperation auf Basis einer Winograd-Transformation auf eine Weise durchzuführen, die eine Zahl von Operationen und/oder eine Zahl und/oder eine Kapazität von Registern verringern kann. In manchen Ausführungsbeispielen kann die Leistung einer Neuronalnetzvorrichtung 2000 oder eines Abschnitts davon, wie etwa einer Neuronalnetzvorrichtung 1400 und/oder einer integrierten Schaltung 1000, verbessert werden und/oder ein Leistungsverbrauch derselben kann verringert werden.
  • Wie hierin verwendet soll eine Beschreibung, dass zwei oder mehr Operationen und/oder Ereignisse „jeweils für sich“ und „simultan“ stattfinden, angeben, dass zu mindestens einem Zeitpunkt zumindest ein Teil von jeder dieser Operationen und/oder Ereignissen durchgeführt wird. In manchen Ausführungsbeispielen können solche Operationen oder Ereignisse über einer gleichen Dauer stattfinden, wie etwa zum gleichen Zeitpunkt beginnen, zum gleichen Zeitpunkt enden und/oder mit der gleichen oder einer ähnlichen Geschwindigkeit über der Dauer durch einen identischen Satz von Schritten stattfinden. In anderen Ausführungsbeispielen können sich zwei oder mehr Operationen oder Ereignisse nur teilweise überlappen; zum Beispiel kann eine erste Operation oder ein erstes Ereignis zu unterschiedlichen Zeitpunkten starten, zu unterschiedlichen Zeitpunkten enden und/oder mit einer unterschiedlichen Geschwindigkeit über einer ausgewählten Dauer durch den gleichen oder einen unterschiedlichen Satz von Operationen stattfinden. All diese Variationen, die vernünftigerweise und logischerweise möglich sind, und die anderen Aussagen nicht widersprechen, sollen in dieser Offenbarung eingeschlossen sein, deren Bereich als von den Ansprüchen definiert zu verstehen ist.
  • Auch wenn die erfinderischen Ideen konkret unter Bezugnahme auf einige ihrer Ausführungsbeispiele gezeigt und beschrieben worden ist, sei klargestellt, dass verschiedene Änderungen an der Form und an Einzelheiten vorgenommen werden können, ohne vom Bereich und Gedanken der folgenden Ansprüche abzuweichen. Zum Beispiel schließen manche Ausführungsbeispiele eine Neuronalnetz-Verarbeitungsschaltung 130 ein, die als Satz von Elementen oder Komponenten organisiert ist, die eine Rechenschaltung 131, einen Gewichtungspufferspeicher 132, einen Merkmalskartenpufferspeicher 133, eine Transformationsschaltung 134, einen Controller 135 und/oder einen RAM 136 einschließen. Man beachte, dass andere Ausführungsbeispiele weniger (wie etwa eines) oder zusätzliche Elemente oder Komponenten aufweisen können; bestimmte Elemente oder Komponenten umbenennen und/oder umordnen können; Duplikate bestimmter Elemente oder Komponenten weglassen oder enthalten können, solche Elemente oder Komponenten auf andere Weise organisieren können, wie etwa durch Kombinieren der Rechenschaltung 131 und der Transformationsschaltung 134 zu einer einzigen Schaltung; und/oder eine Reihe verschiedener Technologien für jedes Element oder jede Komponente, wie etwa Hardware, Software oder eine Kombination aus Hardware und Software nutzen können. Manche Ausführungsbeispiele schließen mehrere Komponenten oder Elemente in ein und derselben Vorrichtung ein, während andere Ausführungsbeispiele solche Komponenten oder Elemente auf verschiedene Interkommunikationsvorrichtungen verteilen können. Manche Ausführungsbeispiele können das Teilen von Ressourcen, wie etwa eines Prozessors und einer Speicherschaltung, von mehreren Elementen oder Komponenten, entweder in Reihe (wie etwa sequenziell) und/oder parallel (wie etwa zeitgleich) einschließen, während andere Ausführungsbeispiele unterschiedliche Sätze von Ressourcen für unterschiedliche Elemente oder Komponenten einschließen können. All diese Variationen, die vernünftigerweise und logischerweise möglich sind, und die anderen Aussagen nicht widersprechen, sollen in dieser Offenbarung eingeschlossen sein, deren Bereich als von den Ansprüchen definiert zu verstehen ist.
  • 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
    • KR 1020190008603 [0001]

Claims (25)

  1. Vorrichtung für eine Durchführung einer Faltungsoperation an einem neuronalen Netz, wobei die Vorrichtung aufweist: eine Neuronalnetz-Verarbeitungsschaltung, die ausgelegt ist zum: Erzeugen einer transformierten Eingangsmerkmalskarte durch Durchführen einer Winograd-Transformation an einer Eingangsmerkmalskarte, wobei die transformierte Eingangsmerkmalskarte eine Mehrzahl von Kanälen einschließt, die jeweils eine Matrixform aufweisen; Durchführen von elementweisen Multiplikationen zwischen einem Merkmalsvektor der transformierten Eingangsmerkmalskarte und einem Gewichtungsvektor eines transformierten Gewichtungskernel, die auf Basis der Winograd-Transformation erhalten worden sind; und Addieren von Ergebnissen der elementweisen Multiplikationen, wobei die elementweisen Multiplikationen Kanal für Kanal in Bezug auf den Merkmalsvektor, der Merkmalswerte an einer gleichen Position in der Mehrzahl von Kanälen der transformierten Eingangsmerkmalskarte aufweist, durchgeführt werden.
  2. Vorrichtung nach Anspruch 1, wobei die Neuronalnetz-Verarbeitungsschaltung dafür ausgelegt ist, die elementweisen Multiplikationen Kanal-sequentiell und in Bezug auf Eingangsmerkmalswerte, die im Merkmalsvektor der transformierten Eingangsmerkmalskarte enthalten sind, und Gewichtungen, die im Gewichtungsvektor des transformierten Gewichtungskernel enthalten sind, Kanal für Kanal durchzuführen, und die Ergebnisse der elementweisen Multiplikationen der Eingangsmerkmalswerte und die Gewichtungen, die einen Wert ungleich null aufweisen, sowie den zu dem Merkmalsvektor korrespondierenden Gewichtungsvektor zu addieren.
  3. Vorrichtung nach Anspruch 1, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, eine elementweise Multiplikation in Bezug auf einen Kanal zu überspringen, der Merkmale mit einem Wert gleich null und/oder Gewichtungen mit einem Wert gleich null aufweist, wobei die Merkmale im Merkmalsvektor der transformierten Eingangsmerkmalskarte enthalten sind und die Gewichtungen im Gewichtungsvektor des transformierten Gewichtungskernel enthalten sind.
  4. Vorrichtung nach Anspruch 1, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, Informationen über erste Eingangsmerkmale mit einem Wert ungleich null in der Eingangsmerkmalskarte zu erzeugen.
  5. Vorrichtung nach Anspruch 1, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, den transformierten Gewichtungskernel in eine Mehrzahl von Gewichtungsvektoren durch Gruppieren von Gewichtungen an korrespondierenden Positionen in der Mehrzahl von Kanälen des transformierten Gewichtungskernel in jeden der Gewichtungsvektoren umzuformatieren.
  6. Vorrichtung nach Anspruch 5, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, durch Rück-Umformatierung von Ausgangsmerkmalswerten auf Basis einer Position eines korrespondierenden Gewichtungsvektor von der Mehrzahl von Gewichtungsvektoren eine transformierte Ausgangsmerkmalskarte zu erzeugen, und dafür ausgelegt ist, eine Winograd-Rücktransformation an der transformierten Ausgangsmerkmalskarte durchzuführen.
  7. Vorrichtung nach Anspruch 1, wobei die Neuronalnetz-Verarbeitungsschaltung die elementweisen Multiplikationen Kanal für Kanal in Bezug auf Merkmalswerte, die im Merkmalsvektor der transformierten Eingangsmerkmalskarte enthalten sind, und Gewichtungen, die im Gewichtungsvektor des transformierten Gewichtungskernel enthalten sind, simultan durchzuführen, und die Ergebnisse der elementweisen Multiplikationen addiert.
  8. Verfahren zum Betreiben einer Vorrichtung, die eine Neuronalnetz-Verarbeitungsschaltung aufweist, um eine Faltungsoperation an einem neuronalen Netz durchzuführen, wobei das Verfahren beinhaltet: Umformatieren mindestens eines Winograd-transformierten Gewichtungskernels zu einer Mehrzahl von Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung durch Gruppieren von Gewichtungen an korrespondierenden Positionen in einer Mehrzahl von Kanälen des mindestens einen Winograd-transformierten Gewichtungskernel zu den einzelnen Gewichtungsbalken; Erlangen einer Winograd-transformierten Eingangsmerkmalskarte durch die Neuronalnetz-Verarbeitungsschaltung; Durchführen eines Skalarprodukts an jedem von der Mehrzahl von Merkmalsbalken und einem korrespondierenden Gewichtungsbalken von der Mehrzahl von Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung, wobei jeder von der Mehrzahl von Merkmalsbalken Merkmalswerte an einer gleichen Position in der Mehrzahl von Kanälen der Winograd-transformierten Eingangsmerkmalskarte aufweist; Erzeugen einer Ausgangsmerkmalskarte durch Rück-Umformatierung von Skalarproduktergebnissen auf Basis jeweiliger Positionen von der Mehrzahl von Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung, wobei die Skalarproduktergebnisse jeweils in Bezug auf die Mehrzahl von Gewichtungsbalken berechnet worden sind; und Durchführen einer Winograd-Rücktransformation an der Ausgangsmerkmalskarte durch die Neuronalnetz-Verarbeitungsschaltung.
  9. Verfahren nach Anspruch 8, wobei das Durchführen des Skalarprodukts beinhaltet: sequentielles Durchführen einer elementweisen Multiplikation Kanal für Kanal an Merkmalswerten eines ersten Merkmalsbalkens von der Mehrzahl von Merkmalsbalken und Gewichtungen eines ersten Gewichtungsbalkens von der Mehrzahl von Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung; und Addieren sequentiell erzeugter Multiplikationsergebnisse durch die Neuronalnetz-Verarbeitungsschaltung.
  10. Verfahren nach Anspruch 9, wobei das Durchführen der elementweisen Multiplikationen das Durchführen von elementweisen Multiplikationen an Merkmalswerten mit einem Wert ungleich null von den Merkmalswerten des ersten Merkmalsbalkens und den Gewichtungen des ersten Gewichtungsbalkens durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  11. Verfahren nach Anspruch 9, wobei das Durchführen der elementweisen Multiplikationen das Überspringen von elementweisen Multiplikationen in Bezug auf Merkmalswerte mit einem Wert gleich null von den Merkmalswerten des ersten Merkmalsbalkens beinhaltet.
  12. Verfahren nach Anspruch 9, wobei das Durchführen der elementweisen Multiplikationen das Durchführen einer elementweisen Multiplikation Kanal für Kanal an mindestens einem Merkmalswert mit einem Wert gleich null von den Merkmalswerten des ersten Merkmalsbalkens und mindestens einem Gewicht mit einem Wert ungleich null des ersten Gewichtungsbalkens durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  13. Verfahren nach Anspruch 8, wobei das Erlangen der Winograd-transformierten Eingangsmerkmalskarte das Ermitteln von Informationen über Eingangsmerkmalswerte mit einem Wert ungleich null in der Winograd-transformierten Eingangsmerkmalskarte und/oder von Informationen über Gewichtungen mit einem Wert ungleich null in dem mindestens einen Winograd-transformierten Gewichtungskernel durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  14. Verfahren nach Anspruch 13, wobei die Informationen über Eingangsmerkmalswerte mit einem Wert ungleich null in der Winograd-transformierten Eingangsmerkmalskarte eine Liste umfassen, die eine Position von jedem der Eingangsmerkmalswerte mit dem Wert ungleich null in der Winograd-transformierten Eingangsmerkmalskarte angibt.
  15. Verfahren nach Anspruch 8, wobei das Durchführen des Skalarprodukts das parallele Durchführen von Skalarprodukten für die Mehrzahl von Merkmalsbalken durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  16. Verfahren nach Anspruch 8, wobei der mindestens eine Winograd-transformierte Gewichtungskernel einen ersten Gewichtungskernel und einen zweiten Gewichtungskernel, der die gleiche Größe aufweist wie der erste Gewichtungskernel, aufweist, und die Umformatierung eine Gruppierung der Gewichtungen an einer gleichen Position in der Mehrzahl von Kanälen von sowohl dem ersten Gewichtungskernel als auch dem zweiten Gewichtungskernel zu einem Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  17. Verfahren nach Anspruch 16, wobei das Durchführen des Skalarprodukts das parallele Durchführen eines Skalarprodukts in Bezug auf einen ersten Gewichtungsbalken des ersten Gewichtungskernel und eines Skalarprodukts in Bezug auf einen ersten Gewichtungsbalken des zweiten Gewichtungskernel durch die Neuronalnetz-Verarbeitungsschaltung beinhaltet.
  18. Verfahren nach Anspruch 8, wobei das Durchführen des Skalarprodukts beinhaltet: Gleichzeitiges Durchführen von elementweisen Multiplikationen, jeweils für sich, Kanal für Kanal an Merkmalswerten eines ersten Merkmalsbalkens von der Mehrzahl von Merkmalsbalken und Gewichtungen eines ersten Gewichtungsbalkens von der Mehrzahl von Gewichtungsbalken durch die Neuronalnetz-Verarbeitungsschaltung; und Gleichzeitiges Addieren von Multiplikationsergebnissen der elementweisen Multiplikationen, jeweils für sich, durch die Neuronalnetz-Verarbeitungsschaltung.
  19. Verfahren nach Anspruch 8, ferner das Bestimmen eines Anteils von Werten gleich null von den Merkmalswerten und/oder eines Anteils von Werten gleich null von den Gewichtungen durch die Neuronalnetz-Verarbeitungsschaltung umfassend, wobei, wenn der Anteil von Werten gleich null mindestens so groß ist wie ein Referenzwert, die Durchführung des Skalarprodukts beinhaltet: sequentielles Durchführen von elementweisen Multiplikationen Kanal für Kanal an Merkmalswerten eines ersten Merkmalsbalkens und Gewichtungen eines ersten Gewichtungsbalkens durch die Neuronalnetz-Verarbeitungsschaltung; sequentielles Addieren von Multiplikationsergebnissen der elementweisen Multiplikationen durch die Neuronalnetz-Verarbeitungsschaltung; und Überspringen einer elementweisen Multiplikation in Bezug auf einen Kanal mit einem Merkmalswert mit einem Wert gleich null und/oder einem Gewicht mit einem Wert gleich null, und wenn der Anteil von Werten gleich null kleiner ist als der Referenzwertwert, beinhaltet das Durchführen des Skalarprodukts das simultane Durchführen elementweiser Multiplikationen Kanal für Kanal an den Merkmalswerten des ersten Merkmalsbalkens und den Gewichtungen des ersten Gewichtungsbalkens und das Addieren der Multiplikationsergebnisse.
  20. Neuronalnetz-Verarbeitungsschaltung, umfassend: eine Neuronalnetz-Verarbeitungsschaltung, die dafür ausgelegt ist, eine Neuronalnetz-Operation durchzuführen durch Durchführen einer auf Winograd-basierten Faltungsoperation durch Durchführen eines elementweisen Skalarprodukts an einer Eingangsmerkmalskarte bzw. Gewichtungskernels, die über eine Winograd-Transformation erhalten wurden, und Durchführen des elementweisen Skalarprodukts in Bezug auf jeden Merkmalsbalken, der korrespondierenden Elemente in einer Mehrzahl von Kanälen der Eingangsmerkmalskarte aufweist.
  21. Neuronalnetz-Verarbeitungsschaltung nach Anspruch 20, wobei die Neuronalnetz-Verarbeitungsschaltung eine Mehrzahl von Verarbeitungselementen aufweist, die jeweils dafür ausgelegt sind, das elementweise Skalarprodukt in Bezug auf jeden Merkmalsvektor durchzuführen, der Merkmalswerte an einer gleichen Position in der Mehrzahl von Kanälen der Eingangsmerkmalskarte aufweist, und wobei die Neuronalnetz-Verarbeitungsschaltung ferner ausgelegt ist zum: Erzeugen der Eingangsmerkmalskarte anhand der Winograd-Transformation, Erzeugen einer transformierten Ausgangsmerkmalskarte durch Rück-Umformatierung von Ausgangsmerkmalen auf Basis einer Position eines korrespondierenden Gewichtungsvektors von einer Mehrzahl von Gewichtungsvektoren, und Durchführen einer Winograd-Rücktransformation an der transformierten Ausgangsmerkmalskarte.
  22. Neuronalnetz-Verarbeitungsschaltung nach Anspruch 21, wobei jedes von der Mehrzahl von Verarbeitungselementen dafür ausgelegt ist, Multiplikationen sequentiell Kanal für Kanal in Bezug auf Eingangsmerkmalswerte, die im Merkmalsvektor der Eingangsmerkmalskarte enthalten sind, und Gewichte, die in einem Gewichtungsvektor von jedem der transformierten Gewichtungskernels enthalten sind, durchzuführen, und die Multiplikationsergebnisse addiert, wobei die Eingangsmerkmalswerte und die Gewichtungen einen Wert ungleich null aufweisen und der Gewichtungsvektor zu dem Merkmalsvektor korrespondiert.
  23. Vorrichtung nach Anspruch 21, wobei jedes von der Mehrzahl von Verarbeitungselementen dafür ausgelegt ist, eine Multiplikation in Bezug auf einen Kanal zu überspringen, der Merkmale mit einem Wert gleich null und/oder Gewichtungen mit einem Wert gleich null aufweist, wobei die Merkmale im Merkmalsvektor der Eingangsmerkmalskarte enthalten sind und die Gewichtungen in einem Gewichtungsvektor von jedem der Gewichtungskernels enthalten sind.
  24. Neuronalnetz-Verarbeitungsschaltung nach Anspruch 20, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, die Winograd-Transformation an den Gewichtungskernels durchzuführen.
  25. Neuronalnetz-Verarbeitungsschaltung nach Anspruch 24, wobei die Neuronalnetz-Verarbeitungsschaltung ferner dafür ausgelegt ist, jeden von den Gewichtungskernels in eine Mehrzahl von Gewichtungsvektoren durch Gruppieren von Gewichtungen an korrespondierenden Positionen in der Mehrzahl von Kanälen der Gewichtungskernels in jeden der Gewichtungsvektoren umzuformatieren.
DE102020101187.3A 2019-01-23 2020-01-20 Winograd-transformationsfaltungsoperation für neuronale netze Pending DE102020101187A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2019-0008603 2019-01-23
KR1020190008603A KR20200091623A (ko) 2019-01-23 2019-01-23 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치

Publications (1)

Publication Number Publication Date
DE102020101187A1 true DE102020101187A1 (de) 2020-07-23

Family

ID=71403126

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020101187.3A Pending DE102020101187A1 (de) 2019-01-23 2020-01-20 Winograd-transformationsfaltungsoperation für neuronale netze

Country Status (4)

Country Link
US (1) US20200234124A1 (de)
KR (1) KR20200091623A (de)
CN (1) CN111476360A (de)
DE (1) DE102020101187A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423312B2 (en) * 2018-05-14 2022-08-23 Samsung Electronics Co., Ltd Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints
US11200438B2 (en) 2018-12-07 2021-12-14 Dus Operating Inc. Sequential training method for heterogeneous convolutional neural network
KR20200082613A (ko) * 2018-12-31 2020-07-08 에스케이하이닉스 주식회사 프로세싱 시스템
US11068069B2 (en) * 2019-02-04 2021-07-20 Dus Operating Inc. Vehicle control with facial and gesture recognition using a convolutional neural network
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
WO2020190800A1 (en) 2019-03-15 2020-09-24 Intel Corporation Dynamic memory reconfiguration
WO2020190807A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
US11222092B2 (en) 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
US11455368B2 (en) * 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US11188778B1 (en) 2020-05-05 2021-11-30 Illumina, Inc. Equalization-based image processing and spatial crosstalk attenuator
US10970619B1 (en) * 2020-08-21 2021-04-06 Moffett Technologies Co., Limited Method and system for hierarchical weight-sparse convolution processing
GB2599098B (en) * 2020-09-22 2024-04-10 Imagination Tech Ltd Hardware implementation of windowed operations in three or more dimensions
CN112149373B (zh) * 2020-09-25 2022-06-03 武汉大学 一种复杂模拟电路故障识别与估计方法及系统
WO2022067508A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种神经网络加速器、加速方法以及装置
CN116368496A (zh) * 2020-10-15 2023-06-30 三星电子株式会社 电子设备和电子设备的控制方法
CN112199636B (zh) * 2020-10-15 2022-10-28 清华大学 适用于微处理器的快速卷积方法及装置
KR20220060908A (ko) * 2020-11-05 2022-05-12 삼성전자주식회사 컨볼루션 연산을 수행하는 전자 장치 및 그 동작 방법
CN113269302A (zh) * 2021-05-11 2021-08-17 中山大学 面向2D和3D卷积神经网络的Winograd处理方法及系统
CN113407904B (zh) * 2021-06-09 2023-04-07 中山大学 兼容多维度卷积神经网络的Winograd处理方法、系统及介质
US11455487B1 (en) 2021-10-26 2022-09-27 Illumina Software, Inc. Intensity extraction and crosstalk attenuation using interpolation and adaptation for base calling
US20240028556A1 (en) * 2022-07-25 2024-01-25 Xilinx, Inc. Reconfigurable neural engine with extensible instruction set architecture
KR102543512B1 (ko) * 2022-10-31 2023-06-13 서울대학교산학협력단 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190008603A (ko) 2017-07-17 2019-01-25 경북대학교 산학협력단 에어커튼이 장착된 친환경 버스부스

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102499396B1 (ko) * 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US20180253636A1 (en) * 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US11487846B2 (en) * 2018-05-04 2022-11-01 Apple Inc. Performing multiply and accumulate operations in neural network processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190008603A (ko) 2017-07-17 2019-01-25 경북대학교 산학협력단 에어커튼이 장착된 친환경 버스부스

Also Published As

Publication number Publication date
KR20200091623A (ko) 2020-07-31
US20200234124A1 (en) 2020-07-23
CN111476360A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
DE102020101187A1 (de) Winograd-transformationsfaltungsoperation für neuronale netze
DE102017121887A1 (de) Ausführen von Kerndurchschreiten in Hardware
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE102018105457A1 (de) Transponieren von Matrizen neuronaler Netze in Hardware
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE102019115060A1 (de) Verfahren and einrichtung zur speicherzugriffsverwaltung für die datenverarbeitung
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE102017115519A1 (de) Superpixel-Verfahren für faltende neuronale Netze
DE202016107442U1 (de) Vektor-Recheneinheit in einem neuronalen Netzwerkprozessor
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE102017120588A1 (de) Befehlssatzarchitektur für neuronale Netze
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE202018100938U1 (de) Parallelverarbeitung von Reduktions- und Rundsendeoperationen an großen Datensätzen nichtskalarer Daten
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
DE112018006377T5 (de) Verschmelzen spärlich besetzter kernels zur approximation eines vollen kernels eines neuronalen faltungsnetzes
DE102022130893A1 (de) Systeme und Verfahren für tiefes Multitask-Lernen für eingebettete Machine-Vision-Anwendungen
DE112010003810T5 (de) Verfahren, Programm und paralleles Computersystem für die Planung elner Vielzahl von Berechnungsverfahren einschließlich All-to-All Kommunikation (A2A) zwischen einer Vielzahl von Knoten (Prozessoren), die ein Netzwerk formen
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE102019115875A1 (de) Verfahren und vorrichtung für ein neurales netz
DE19504089A1 (de) Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung

Legal Events

Date Code Title Description
R012 Request for examination validly filed