© Liashko/Shutterstock.com
Mehrdimensionale Arrays für Machine Learning

Daten in den Griff bekommen


Für viele Verfahren im Bereich Datenanalyse und Machine Learning werden mehrdimensionale Arrays benötigt. Da oft mit großen Datenmengen gearbeitet wird, ist es, neben anderen Optimierungen, wünschenswert, eine Arrayimplementierung zu verwenden, die auf hohe Performance und geringen Speicherverbrauch optimiert ist. Viele Frameworks setzen deshalb auf ndarrays von NumPy oder eigene Implementierungen, statt die Standard-Listen- oder Arrayimplementierungen von Python zu verwenden.

Schauen wir uns zunächst den Einsatz von mehrdimensionalen Arrays an. Im Bereich Datenanalyse und Visualisierung wird häufig mit Vektoren, Matrizen und Tensoren – also ein, zwei und mehrdimensionalen Daten –, deren Teilmengen und Kombinationen gearbeitet und es werden Aggregatsfunktionen darauf ausgeführt. Dafür ist es wichtig, Datenstrukturen zu verwenden, die einen einheitlichen Datentyp aller Elemente gewährleisten können, komfortable Funktionen zum Teilen und Kombinieren bereitstellen, und die bereits eine Reihe von Aggregatsfunktionen wie Maximum, Minimum, Mittelwert, Standardabweichung bereitstellen. Extrem werden die Anforderungen im Bereich Deep Learning, beispielsweise beim Einsatz von Convolutional Neural Networks (CNN) im Bereich Bildverarbeitung. Dabei werden die einzelnen Pixel eines Bilds üblicherweise in Farbkanäle gesplittet und auf mehrdimensionale Arrays abgebildet. Bei einem 32 x 32 Pixel großen Bild im RGB-Farbraum ergibt das beispielsweise drei 32 x 32 große Arrays – eines für jede Farbe. Diese Arrays durchlaufen die Verarbeitungslayer der jeweiligen CNN-Architektur – bei der VGG16-Architektur sind es beispielsweise 18 Convolutional und Pooling Layer – und werden dabei in jedem Layer transformiert, bis sie in der letzten Stufe schließlich auf einen Ausgabevektor abgebildet werden. Beim Training eines neuronalen Netzes werden die Layer u. U. von mehreren 10 000 Bildern mehrere Dutzend Male durchlaufen. Abbildung 1 zeigt die Größe der Arrays in den einzelnen Arbeitsschritten eines VGG16 – einer CNN-Standardarchitektur. Da Deep-Learning-Verfahren üblicherweise auf GPUs oder TPUs (Tensor Processing Units von Google) ausgeführt werden, sollten diese entsprechend unterstützt werden.

koppelt_daten_1.tif_fmt1.jpgAbb. 1: Größe der Arrays

Auch für Verfahren im Bereich NLP, wie Word-Embedding-Verfahren, werden Arrays benötigt. In diesen Verfahren werden die Wörter auf numerische Werte abgebildet und weiterverarbeitet.

NumPys ndarray

NumPy [1] ist eine Bibliothek, die mit dem Ziel entwickelt wurde, mit großen, mehrdimensionalen Arrays einfach und performant arbeiten zu können. Verglichen mit Python-Listen benötigen sie außerdem weniger Arbeitsspeicher. Die zentrale Klasse numpy.ndarray – für n-dimensional array – repräsentiert ein mehrdimensionales Array fester Größe. Beim Anlegen wird dem Array ein zusammenhängender Speicherbereich fest zugeordnet. Wie ein Array auf diesen eindimensionalen Speicherbereich abgebildet wird, wird durch drei zusätzliche Metadaten festgelegt. Das Objekt dtype beschreibt die Struktur und die Datentypen des Arrays. NumPy unterstützt dabei eine größere Anzahl an Datentypen als Python, beispielsweise unsigned Integer oder komplexe Zahlen. Das dtype-Objekt kann bei der Initialisierung eines Arrays entweder explizit angegeben werden, oder es wird von NumPy automatisch erstellt. Ob e...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang