Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) Niko Wilbert (HU Berlin)



Ähnliche Dokumente
Neuronale Netze. Automatische Hinderniserkennung Paul Fritsche

Schnelles Denken - Maschinelles Lernen mit Apache Spark 2

Python - Open-Source-Werkzeuge für Wissenschaftler und Ingenieure

Multivariate Pattern Analysis. Jan Mehnert, Christoph Korn

Modell-basierte Entwicklung mit der Timing Definition Language (TDL)

Neural Networks: Architectures and Applications for NLP

Computergrundlagen Moderne Rechnerarchitekturen

Python für Wissenschaftler

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig

Neural Networks. mit. Tools für Computerlinguist/innen

Einführung in Python Teil I Grundlagen

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

GridMate The Grid Matlab Extension

Computergrundlagen Moderne Rechnerarchitekturen

Kann SAS Ihre Handschrift lesen? Machine Learning am Beispiel von Stacked Denoising Autoencoders

Profiling in Python. Seminar: Effiziente Programmierung. Jan Pohlmann. November Jan Pohlmann Profiling in Python November / 32

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

Smart Factory Bootcamp

Systemmanagement mit Puppet und Foreman

Neuronale Netze. Christian Böhm.

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

6.2 Feed-Forward Netze

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Bibliotheks-basierte Virtualisierung

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

Institut für Künstliche Intelligenz

FPGA Systementwurf. Rosbeh Etemadi. Paderborn University. 29. Mai 2007

Neue Wege mit Contao 4

Multi-Tool Testlandschaft mit DDS

Situation-Adaptive Multimodal Dialogue Platform. Übersicht

Predictive Analytics. Warum datenbasierte Vorhersagen kein Hexenwerk sind. ASQF Automation Day Dr. Stefano Signoriello

In unserem fünftägigen Kurs "Python - Komplettkurs" erlangen Sie umfassende Kenntnisse in der Anwendungsentwicklung mit Python.

Kamera-basierte Objekterkennung

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

Erfahrungen mit LSF an der RWTH. Eine kurze Geschichte der LoadSharingFacility

Wege zur industriellen Datenanalyse

PostgreSQL auf vielen CPUs. Hans-Jürgen Schönig Hans-Jürgen Schönig

Neuronale Netze Aufgaben 3

Wir haben in den vorherigen Kapiteln verschiedene Verfahren zur Regression und Klassifikation kennengelernt (z.b. lineare Regression, SVMs)

Studienverlaufspläne M.Sc. Computational Science. 19. Juli 2011

OpenCL. OpenCL. Boris Totev, Cornelius Knap

Platform as a Service (PaaS) & Containerization

Rekurrente Neuronale Netze

Axis2, CXF und JAX-WS RI im Vergleich

Build Management Tool

Azure Community Deutschland. Microsoft Azure. Was ist drin für Unternehmen? Oliver Michalski (Senior Software Engineer.NET)

Bielefeld Graphics & Geometry Group. Brain Machine Interfaces Reaching and Grasping by Primates

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Deep Learning für Automatische Dokumentanalyse

Neural Networks: Architectures and Applications for NLP

Deployment und Sicherheit komplexer Open-Source Webanwendungen

Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation. Yupeng Guo

Industrie 4.0 und Smart Data

Die EnMAP-Box Ziele, Stand der Entwicklung und Ausblick

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Nutzung paralleler Prozesse bei der Umweltsimulation

Einige Grundlagen zu OpenMP

Visualisierung und Vorhersagesteuerung mit Delft FEWS in der Schweiz

ETL-Industrialisierung mit dem OWB Mapping Generator. Irina Gotlibovych Senior System Beraterin

Neuronale Netze, Fuzzy Control, Genetische Algorithmen. Prof. Jürgen Sauer. 5. Aufgabenblatt: Neural Network Toolbox 1

Image: (CC-0) Künstliche Intelligenz & Bildung Nicht nur für ExpertInnen

dacore Datenbanksysteme AG Neue Konzepte zur Optimierung der Auslastungsplanung und Big Data im Informationsmanagement

Data Pipelines mit zentralem Kosmos Kafka. Markus Bente

F. Kathe ROS Folie 1

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2018

DWH Automation - Steigerung von Qualität, Effektivität und Transparenz in der DWH Implementierung und dem Betrieb. Referent: Raphael Henneke

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart

Institut für Angewandte Mikroelektronik und Datentechnik Fachbereich Elektrotechnik und Informationstechnik Universität Rostock.

Weitere Untersuchungen hinsichtlich der Anwendung von KNN für Solvency 2. Tom Schelthoff

Integration von Java Legacy Code in die Fusion Middleware 11 mittels des SOA Suite Spring Components

CAS coole Arbeitsumgebung für SAS Programme

Interactive exploration of neural networks in Python. 3-d simulation of the e-puck robot in virtual environments

Einführung in Python Teil II Bibliotheken für wissenschaftliches Rechnen

PCA based feature fusion

MACHINE LEARNING MIT JAVA UND H2O. Dr. Jonathan Boidol, Stephan Schiffner , Java Forum, Stuttgart

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Infrastruktur entwickeln mit Chef

Realtime Daten-Rückschreibung in Tableau mit der Extensions API //

Dokumentclustering am Beispiel von Liedtexten

Modulliste. für den Masterstudiengang. Data & Knowledge Engineering (alt) an der Otto von Guericke Universität Magdeburg Fakultät für Informatik

BIF/SWE - Übungsbeispiel

SAR ALS SERVICE BEREITSTELLUNG VON SAR-ANALYTIK FÜR ENTERPRISE- UND CLOUD-UMGEBUNGEN

Requirements basiertes Testen mit JUnit Architektur für eine Verbindung von Requirements Management und Test Management

Strukturiertes Programmieren

PSE Molekulardynamik - Entwicklung eines Molekulardynamik-Simulators

Datenbankbasierte Lösungen

Microsoft Azure Deutschland ist jetzt verfügbar -

Testen von sicherheitskritischer Embedded Software mit frei verfügbaren Tools. - ein Erfahrungsbericht

Präsentation. Entwicklung eines Frameworks. in Forms 12c. - Light Version. Friedhold Matz. Forms Day Entwicklung eines Frameworks in Forms 12c

Multimedia im Netz Wintersemester 2012/13

Lösungsvorschlag Serie 2 Rekursion

APEX DESKTOP APPS. Interaktion mit dem Client System

Institut für Angewandte Mikroelektronik und Datentechnik Fachbereich Elektrotechnik und Informationstechnik Universität Rostock.

aformatik Training & Consulting GmbH & Co. KG Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss

backy Image-basiertes Backup für virtuelle Maschinen Christian Kauhaus Chemnitzer Linux-Tage 2016

Apriori Algortihmus. Endpräsentation. Stefan George, Felix Leupold

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

Projekt-INF Folie 1

Machinelles Lernen. «Eine kleine Einführung» BSI Business Systems Integration AG

Transkript:

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) Niko Wilbert (HU Berlin)

Python in Computational Neuroscience

Computational Neuroscience Computational Neuroscience ist ein wachsender Bereich der life sciences. Wird in Deutschland gefördert durch das BMBF im Rahmen des Bernstein Netzwerkes. Computational bezieht sich die Erforschung der Informationsverarbeitung im Gehirn. Unsere Gruppe versucht die Funktionen des Visuellen Systems zu modellieren, mit mathematischen Ansätze und Computermodellen. Verbindung zu machine learning

Python in Computational Neuroscience Wissenschaftler in diesem Bereich benötigen Computer für die Datenanalyse oder Simulationen, von einfachen Matlab Skripten bis zur Nutzung von Supercomputern (z.b. IBM Blue Gene/L in Lausanne). Python wird zunehmend populär: Ersetzt Matlab in der Datenanalyse und einfachen Simulationen. Produktives Frontend für komplexe Simulatoren (z.b., PyNN ist ein Interface zu Standard-Simulationssoftware wie NEURON).

Modular toolkit for Data Processing

Hintergrund Open Source library (LGPL) erste Veröffentlichung 2004 durch Pietro Berkes und Tiziano Zito 15k+ Downloads, verfügbar in Debian, Ubuntu, MacPorts, Python(x,y) Entstanden in und unterstützt durch die Forschungsgruppe von Prof. Wiskott, auch mit dem Ziel Forschungsarbeiten reproduzierbar zu machen und Zusammenarbeit zu erleichtern. Anwendungen auch außerhalb der Neurowissenschaften.

Überblick 1. Einführung der Grundbausteine von MDP 2. Parallelisierung 3. Beispielanwendung

Grundbaustein: Node Node: Grundbaustein der Datenverarbeitung, die Node Klassen entsprechen Algorithms, public API: train (optional) Unterstützt mehrere Trainingsphasen, batch, online, chunks, überwacht, unüberwacht execute bildet n dimensionalen input auf m dimensionalen output ab inverse (optional) inverse Abbildung zu execute Datenformat: 2d numpy arrays (Erster index für samples, zweiter Index für Kanäle) Automatische Tests und Unformungen (dimensions, dtype).

Node Beispiel Beispiel: Principal Component Analysis (PCA) reduziere Daten Dimensionalität von 10 auf 5: >>> import mdp >>> import numpy as np >>> data = np. random. random ((50,10)) # 50 data points >>> node = mdp. nodes. PCANode ( output_dim =5,... dtype = float32 ) >>> node. train ( data ) >>> proj_data = node. execute ( data ) Abkürzung: >>> import mdp >>> import numpy as np >>> data = np. random. random ((50,10)) # 50 data points >>> proj_data = mdp. pca (data, output_dim =5, dtype = float32 )

Nodes in MDP Einige der verfügbaren Nodes: PCA (standard, NIPALS) ICA (FastICA, CuBICA, JADE, TDSEP) Locally Linear Embedding Hessian Locally Linear Embedding Fisher Discriminant Analysis Slow Feature Analysis Independent Slow Feature Analysis Restricted Boltzmann Machine Growing Neural Gas Factor Analysis Gaussian Classifiers Polynomial Expansion Time Frames Hit Parades Noise... Oder schreibe eigenen Node (und stelle ihn MDP zur Verfügung :-).

Grundbaustein: Flow Kombiniere Nodes zu einem Flow (data processing pipeline): >>> flow = PCANode () + SFANode () + FastICANode () >>> flow. train ( train_data ) >>> test_result = flow. execute ( test_data ) >>> rec_test_data = flow. invert ( test_result ) >>> flow += HitParadeNode () automatische Verwaltung von Training, Execution, Inversion automatische Tests: Dimensionalität und Format Benutze arrays oder iterators crash recovery, checkpoints

Grundbaustein: Netzwerke mdp.hinet package für hierarchische Netzwerke Layer (kombiniere Nodes horizontal) Switchboard (Vernetzung zwischen Layern) FlowNode (kombiniere Nodes zu einem supernode ) Alle diese Klassen sind Nodes und können beliebig kombiniert werden.

HTML Darstellung eines Netzwerkes >>> mdp. hinet. show_flow ( flow ) Nützlich zum Debuggen, für Dokumentation oder GUI.

Ausblick: BiNet package Das mdp.binet package wird Datenfluß in beide Richtungen erlauben, ermöglicht z.b. error backpropagation und Schleifen. HTML+JS basierter Inspektor für Debugging und Analysen. Geplant für MDP 3.0

Parallelisierung für embarrassingly parallel Probleme: Datensätze für das Node Training können unabhängig bearbeitet werden, Resultate werden am Ende kombiniert fork Node -> paralleles Training -> join Nodes parallel training und execution werden automatisch verwaltet durch einen ParallelFlow funktioniert für beliebige hierarchische Netzwerke Organisation ist wesentlicher Teil der Parallelisierung einfache Implementierung für neue Nodes (implementiere _fork und _join Methoden) Beispiel: >>> pflow = mdp. parallel. ParallelFlow ([ PCANode (), SFANode ()]) >>> scheduler = mdp. parallel. ProcessScheduler ( n_processes =4) >>> pflow. train (data, scheduler )

Parallele Schedulers MDP verwendet eine abstrakte Scheduler API, die Tasks entgegen nimmt und die Ergebnisse bereitstellt (Adapter für externe Scheduler können einfach implementiert werden). Momentan verfügbare Scheduler: Prozess basierte Scheduler für SMP. Adapter für Parallel Python library (Prozesse oder Sockets). Intern verwenden wir auch einen SSH basierten Scheduler der auf Desktop Rechner im Institut zugreift. Zukunftsaussichten: verwende shared memory mit dem Python multiprocessing Modul verwende MPI (via mpi4py) Und natürlich warten wir auf einfach benutzbare GPU Beschleunigung.

Projektbeispiel Modell zur visuellen Objekterkennung, trainiert mit 155x155 Pixel großen Bildsequenzen mehrere GB an Trainingsdaten pro Trainingsphase. Hierarchisches Netzwerk mit geschachtelten Nodes, 900 FlowNodes in der untersten Schicht Training ist parallelisiert, benötigt trotzdem mehrere Stunden [Franzius, M., Wilbert, N., and Wiskott, L., 2008]

Verwendung von MDP ausführliche Dokumentation: Tutorial für den Einstieg und fortgeschrittene Aspekte, detailierte doc-strings, PEP8 compliant, dokumentiert, und pylint-geprüfter Code API ist stabil und designed für einfache Integration unittest coverage (400+ unit tests) minimale dependencies: Python + NumPy wird z.b. benutzt in: PyMCA (X-ray fluorescence mapping), PyMVPA (ML framework for neuroimaging data analysis), Chandler (personal organizer application)

Danke!