SlideShare ist ein Scribd-Unternehmen logo
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
                        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
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
Modular toolkit for Data
      Processing
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
¨
Uberblick




1. Einf¨hrung der Grundbausteine von MDP
       u

2. Parallelisierung

3. Beispielanwendung




                                           mdp-toolkit.sourceforge.net
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
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
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
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
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
HTML Darstellung eines Netzwerkes

>>> mdp . hinet . show_flow ( flow )

N¨tzlich zum Debuggen, f¨r Dokumentation oder GUI.
 u                      u




                                                     mdp-toolkit.sourceforge.net
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
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
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
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
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
Danke!




         mdp-toolkit.sourceforge.net


                                       mdp-toolkit.sourceforge.net

Weitere ähnliche Inhalte

Andere mochten auch

Schemat prezentacji
Schemat prezentacjiSchemat prezentacji
Schemat prezentacji
historiaimedia
 
tecnologia
tecnologiatecnologia
tecnologia
Ricardo
 
Visita TuríStica Marbella
Visita TuríStica MarbellaVisita TuríStica Marbella
Visita TuríStica Marbella
jornadasgpad21
 
【鉄道・運輸機構】平成20年環境報告書
【鉄道・運輸機構】平成20年環境報告書【鉄道・運輸機構】平成20年環境報告書
【鉄道・運輸機構】平成20年環境報告書
env17
 
藥王大百科
藥王大百科藥王大百科
藥王大百科
JACK KAU
 
97學年度Erp就業學程學生校外實習報告
97學年度Erp就業學程學生校外實習報告97學年度Erp就業學程學生校外實習報告
97學年度Erp就業學程學生校外實習報告
sandra
 
Aparell Digestiu
Aparell DigestiuAparell Digestiu
Aparell Digestiu
ailapetita
 
Oppgaver
OppgaverOppgaver
Oppgaver
dmlgruppen
 
Inspirações gráficas para capas de discos
Inspirações gráficas para capas de discosInspirações gráficas para capas de discos
Inspirações gráficas para capas de discos
Claudia Bordin Rodrigues
 
Bicing Analysis - Villes Cyclables
Bicing Analysis - Villes CyclablesBicing Analysis - Villes Cyclables
Bicing Analysis - Villes Cyclables
jgrivolla
 
Knowledge management 2.0 v Cechach?
Knowledge management 2.0 v Cechach?Knowledge management 2.0 v Cechach?
Knowledge management 2.0 v Cechach?
Jiri Kodera
 
Youblisher.com 1170112-terra cia-edi_o_196
Youblisher.com 1170112-terra cia-edi_o_196Youblisher.com 1170112-terra cia-edi_o_196
Youblisher.com 1170112-terra cia-edi_o_196
Lela Gomes
 
Informatsionno obrazovatelnyy portal-yep_it
Informatsionno obrazovatelnyy portal-yep_it Informatsionno obrazovatelnyy portal-yep_it
Informatsionno obrazovatelnyy portal-yep_it
Natalia Korotonoshkina
 
Data limite
Data limiteData limite
Data limite
rodrigo ariola
 
Plano Boulevard Oficial - Atualizado
Plano Boulevard Oficial - AtualizadoPlano Boulevard Oficial - Atualizado
Plano Boulevard Oficial - Atualizado
Glayson Santos
 
Temas de tecnologia
Temas de tecnologiaTemas de tecnologia
Temas de tecnologia
Rene Spe Jac
 
Dani
DaniDani
u nidad 8
 u nidad 8 u nidad 8
u nidad 8
Upegui1999
 
Lesão labral do tipo slap
Lesão labral do tipo slapLesão labral do tipo slap
Lesão labral do tipo slap
Thayna Weber
 

Andere mochten auch (20)

Schemat prezentacji
Schemat prezentacjiSchemat prezentacji
Schemat prezentacji
 
tecnologia
tecnologiatecnologia
tecnologia
 
Visita TuríStica Marbella
Visita TuríStica MarbellaVisita TuríStica Marbella
Visita TuríStica Marbella
 
【鉄道・運輸機構】平成20年環境報告書
【鉄道・運輸機構】平成20年環境報告書【鉄道・運輸機構】平成20年環境報告書
【鉄道・運輸機構】平成20年環境報告書
 
藥王大百科
藥王大百科藥王大百科
藥王大百科
 
97學年度Erp就業學程學生校外實習報告
97學年度Erp就業學程學生校外實習報告97學年度Erp就業學程學生校外實習報告
97學年度Erp就業學程學生校外實習報告
 
Casablanca
CasablancaCasablanca
Casablanca
 
Aparell Digestiu
Aparell DigestiuAparell Digestiu
Aparell Digestiu
 
Oppgaver
OppgaverOppgaver
Oppgaver
 
Inspirações gráficas para capas de discos
Inspirações gráficas para capas de discosInspirações gráficas para capas de discos
Inspirações gráficas para capas de discos
 
Bicing Analysis - Villes Cyclables
Bicing Analysis - Villes CyclablesBicing Analysis - Villes Cyclables
Bicing Analysis - Villes Cyclables
 
Knowledge management 2.0 v Cechach?
Knowledge management 2.0 v Cechach?Knowledge management 2.0 v Cechach?
Knowledge management 2.0 v Cechach?
 
Youblisher.com 1170112-terra cia-edi_o_196
Youblisher.com 1170112-terra cia-edi_o_196Youblisher.com 1170112-terra cia-edi_o_196
Youblisher.com 1170112-terra cia-edi_o_196
 
Informatsionno obrazovatelnyy portal-yep_it
Informatsionno obrazovatelnyy portal-yep_it Informatsionno obrazovatelnyy portal-yep_it
Informatsionno obrazovatelnyy portal-yep_it
 
Data limite
Data limiteData limite
Data limite
 
Plano Boulevard Oficial - Atualizado
Plano Boulevard Oficial - AtualizadoPlano Boulevard Oficial - Atualizado
Plano Boulevard Oficial - Atualizado
 
Temas de tecnologia
Temas de tecnologiaTemas de tecnologia
Temas de tecnologia
 
Dani
DaniDani
Dani
 
u nidad 8
 u nidad 8 u nidad 8
u nidad 8
 
Lesão labral do tipo slap
Lesão labral do tipo slapLesão labral do tipo slap
Lesão labral do tipo slap
 

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

Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
inovex GmbH
 
Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]
Alexander Hendorf
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
inovex GmbH
 
VampirTrace und Vampir
VampirTrace und VampirVampirTrace und Vampir
VampirTrace und Vampir
Andreas Schreiber
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Jörn Dinkla
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
Andreas Schreiber
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
Sebastian Springer
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
NETWAYS
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
inovex GmbH
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
Jens Albrecht
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
FromDual GmbH
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Claus Brell
 
DWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NETDWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NET
Mykola Dobrochynskyy
 
Node.js
Node.jsNode.js
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
OPITZ CONSULTING Deutschland
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
QAware GmbH
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
Andreas Schreiber
 

Ähnlich wie Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) (20)

Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
 
Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]Einführung Datenanalyse mit Pandas [data2day]
Einführung Datenanalyse mit Pandas [data2day]
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
VampirTrace und Vampir
VampirTrace und VampirVampirTrace und Vampir
VampirTrace und Vampir
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
 
DWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NETDWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NET
 
Node.js
Node.jsNode.js
Node.js
 
Cepicky pywps
Cepicky pywpsCepicky pywps
Cepicky pywps
 
Grundlagen nmap
Grundlagen nmapGrundlagen nmap
Grundlagen nmap
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
 

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

  • 1. Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP) Niko Wilbert (HU Berlin)
  • 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. 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. Modular toolkit for Data Processing
  • 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. ¨ Uberblick 1. Einf¨hrung der Grundbausteine von MDP u 2. Parallelisierung 3. Beispielanwendung mdp-toolkit.sourceforge.net
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Danke! mdp-toolkit.sourceforge.net mdp-toolkit.sourceforge.net