Python in Computational
     Neuroscience
           &
Modular toolkit for Data
   Processing (MDP)

    Niko Wilbert   (H...
Python in
Computational Neuroscience
Computational Neuroscience

Computational Neuroscience ist ein wachsender Bereich der life sciences.
Wird in Deutschland g...
Python in Computational Neuroscience

Wissenschaftler in diesem Bereich ben¨tigen Computer f¨r die
                       ...
Modular toolkit for Data
      Processing
Hintergrund


s   Open Source library (LGPL)

s   erste Ver¨ffentlichung 2004 durch Pietro Berkes und Tiziano Zito
       ...
¨
Uberblick




1. Einf¨hrung der Grundbausteine von MDP
       u

2. Parallelisierung

3. Beispielanwendung




         ...
Grundbaustein: Node


Node: Grundbaustein der Datenverarbeitung,
die Node Klassen entsprechen Algorithms, public API:

tra...
Node Beispiel

Beispiel: Principal Component Analysis (PCA)
reduziere Daten Dimensionalit¨t von 10 auf 5:
                ...
Nodes in MDP

Einige der verf¨gbaren Nodes:
               u

                             PCA (standard, NIPALS)
        ...
Grundbaustein: Flow



Kombiniere Nodes zu einem Flow (data processing pipeline):

>>>   flow = PCANode () + SFANode () + ...
Grundbaustein: Netzwerke

mdp.hinet package f¨r hierarchische Netzwerke
                   u
Layer (kombiniere Nodes horiz...
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 backpro...
Parallelisierung

s f¨r “embarrassingly parallel” Probleme:
   u
  Datens¨tze f¨r das Node Training k¨nnen unabh¨ngig bear...
Parallele Schedulers

MDP verwendet eine abstrakte Scheduler API, die Tasks entgegen
nimmt und die Ergebnisse bereitstellt...
Projektbeispiel

s Modell zur visuellen Objekterkennung,
  trainiert mit 155x155 Pixel großen Bildsequenzen
s mehrere GB a...
Verwendung von MDP


s   ausf¨hrliche Dokumentation:
        u
    Tutorial f¨r den Einstieg und fortgeschrittene Aspekte,...
Danke!




         mdp-toolkit.sourceforge.net


                                       mdp-toolkit.sourceforge.net
Upcoming SlideShare
Loading in...5
×

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)

1,047

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,047
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)

  1. 1. Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) Niko Wilbert (HU Berlin)
  2. 2. Python in Computational Neuroscience
  3. 3. Computational Neuroscience Computational Neuroscience ist ein wachsender Bereich der life sciences. Wird in Deutschland gef¨rdert durch das BMBF im Rahmen des o 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. a Verbindung zu machine learning mdp-toolkit.sourceforge.net
  4. 4. Python in Computational Neuroscience Wissenschaftler in diesem Bereich ben¨tigen Computer f¨r die o u 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: a s Ersetzt Matlab in der Datenanalyse und einfachen Simulationen. s Produktives Frontend f¨r komplexe Simulatoren u (z.B., PyNN ist ein Interface zu Standard-Simulationssoftware wie NEURON). mdp-toolkit.sourceforge.net
  5. 5. Modular toolkit for Data Processing
  6. 6. Hintergrund s Open Source library (LGPL) s erste Ver¨ffentlichung 2004 durch Pietro Berkes und Tiziano Zito o s 15k+ Downloads, verf¨gbar in Debian, Ubuntu, MacPorts, u Python(x,y) s Entstanden in und unterst¨tzt durch die Forschungsgruppe von Prof. u Wiskott, auch mit dem Ziel Forschungsarbeiten reproduzierbar zu machen und Zusammenarbeit zu erleichtern. s Anwendungen auch außerhalb der Neurowissenschaften. mdp-toolkit.sourceforge.net
  7. 7. ¨ Uberblick 1. Einf¨hrung der Grundbausteine von MDP u 2. Parallelisierung 3. Beispielanwendung mdp-toolkit.sourceforge.net
  8. 8. Grundbaustein: Node Node: Grundbaustein der Datenverarbeitung, die Node Klassen entsprechen Algorithms, public API: train (optional) Unterst¨tzt mehrere Trainingsphasen, batch, online, chunks, u uberwacht, un¨berwacht ¨ u 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) u u a Automatische Tests und Unformungen (dimensions, dtype). mdp-toolkit.sourceforge.net
  9. 9. Node Beispiel Beispiel: Principal Component Analysis (PCA) reduziere Daten Dimensionalit¨t von 10 auf 5: a >>> 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: u >>> 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 ’) mdp-toolkit.sourceforge.net
  10. 10. Nodes in MDP Einige der verf¨gbaren Nodes: u 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 :-). u mdp-toolkit.sourceforge.net
  11. 11. 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 () s automatische Verwaltung von Training, Execution, Inversion s automatische Tests: Dimensionalit¨t und Format a s Benutze arrays oder iterators s crash recovery, checkpoints mdp-toolkit.sourceforge.net
  12. 12. Grundbaustein: Netzwerke mdp.hinet package f¨r hierarchische Netzwerke u 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. o mdp-toolkit.sourceforge.net
  13. 13. HTML Darstellung eines Netzwerkes >>> mdp . hinet . show_flow ( flow ) N¨tzlich zum Debuggen, f¨r Dokumentation oder GUI. u u mdp-toolkit.sourceforge.net
  14. 14. Ausblick: BiNet package Das mdp.binet package wird Datenfluß in beide Richtungen erlauben, erm¨glicht z.B. error backpropagation und Schleifen. o HTML+JS basierter Inspektor f¨r Debugging und Analysen. u Geplant f¨r MDP 3.0 u mdp-toolkit.sourceforge.net
  15. 15. Parallelisierung s f¨r “embarrassingly parallel” Probleme: u Datens¨tze f¨r das Node Training k¨nnen unabh¨ngig bearbeitet a u o a werden, Resultate werden am Ende kombiniert fork Node -> paralleles Training -> join Nodes s parallel training und execution werden automatisch verwaltet durch einen ParallelFlow funktioniert f¨r beliebige hierarchische Netzwerke u Organisation ist wesentlicher Teil der Parallelisierung s einfache Implementierung f¨r neue Nodes u (implementiere _fork und _join Methoden) Beispiel: >>> pflow = mdp . parallel . ParallelFlow ([ PCANode () , SFANode ()]) >>> scheduler = mdp . parallel . ProcessScheduler ( n_processes =4) >>> pflow . train ( data , scheduler ) mdp-toolkit.sourceforge.net
  16. 16. Parallele Schedulers MDP verwendet eine abstrakte Scheduler API, die Tasks entgegen nimmt und die Ergebnisse bereitstellt (Adapter f¨r externe Scheduler u k¨nnen einfach implementiert werden). o Momentan verf¨gbare Scheduler: u s Prozess basierte Scheduler f¨r SMP. u s Adapter f¨r Parallel Python library (Prozesse oder Sockets). u s Intern verwenden wir auch einen SSH basierten Scheduler der auf Desktop Rechner im Institut zugreift. Zukunftsaussichten: s verwende shared memory mit dem Python multiprocessing Modul s verwende MPI (via mpi4py) Und nat¨rlich warten wir auf einfach benutzbare GPU Beschleunigung. u mdp-toolkit.sourceforge.net
  17. 17. Projektbeispiel s Modell zur visuellen Objekterkennung, trainiert mit 155x155 Pixel großen Bildsequenzen s mehrere GB an Trainingsdaten pro Trainingsphase. s Hierarchisches Netzwerk mit geschachtelten Nodes, 900 FlowNodes in der untersten Schicht s Training ist parallelisiert, ben¨tigt trotzdem mehrere Stunden o [Franzius, M., Wilbert, N., and Wiskott, L., 2008] mdp-toolkit.sourceforge.net
  18. 18. Verwendung von MDP s ausf¨hrliche Dokumentation: u Tutorial f¨r den Einstieg und fortgeschrittene Aspekte, u detailierte doc-strings, PEP8 compliant, dokumentiert, und pylint-gepr¨fter Code u s API ist stabil und designed f¨r einfache Integration u s unittest coverage (400+ unit tests) s minimale dependencies: Python + NumPy s wird z.B. benutzt in: PyMCA (X-ray fluorescence mapping), PyMVPA (ML framework for neuroimaging data analysis), Chandler (personal organizer application) mdp-toolkit.sourceforge.net
  19. 19. Danke! mdp-toolkit.sourceforge.net mdp-toolkit.sourceforge.net
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×