Beethoven by Deep Neuronal Network

Unser Deep Neuronal Network (Keras2-basiertes WaveNet) wurde jetzt einige Tage auf der Musik von Beethoven trainiert. Ganz spezifisch haben wir die Klaviersonaten genommen (Amazon-Link). Der Interpret ist Yukio Yokoyama (auch Amazon-Link; nein, kein Affiliate-Link 🙂

Wir haben ein paar durchwachsene Ergebnisse…

Learnings

  1. Zuerst muss man verstehen, dass das Training eines so grossen und komplexen Werkes ziemlich „teuer“ ist: 6,5 Tage pro „Epoch“, wenn wir die gesamten Werke nehmen (22KHz). Daher mussten wir die Daten ein bisschen reduzieren…
  2. Wenn man die Daten reduziert, sollte man drauf achten, dass es sich dabei um die richtigen Daten handelt. Diese sollten möglichst homogen sein. Das haben wir nicht gemacht. Wir haben die ersten neun Stücke von der ersten CD genommen.
  3. Selbst wenn man es auf 27 Minuten (wie in unserem Beispiel) reduziert hat, kann es trotzdem noch sehr lange dauern, bis das Netz trainiert ist. In unserem Falle ca. 6,5 Stunden/Epoch mit Horovod und OpenMPI (auf zwei GeForce 1080 Ti gleichzeitig).
  4. Unterschiedliche „initializer“ liefern unterschiedliche Ergebnisse beim „Predict“ (keine Überraschung hier…)
  5. Man sollte mit dem Parameter temperature experimentieren. Das bringt interessante Ergebnisse.
  6. Geduld… Die ersten Ergebnisse, die nach irgendetwas interessantem klingen, kommen erst nach 9 Epochs.
  7. Wenn man längere Musik produzieren will, sollte die Software auf RAM optimiert sein. Im Original von wavenet.py war nicht drauf geachtet worden und für eine Minute Musik brauchte es 250GiB RAM. Jetzt, nach Optimierung braucht es nur noch ca 2GiB – egal wie lange die zu produzierende Musik ist.

Das sind die Stücke, auf denen wir trainiert haben:

  1. Piano Sonata No. 1 In F Minor, Op. 2,1 – I. Allegro (3:51)
  2. Piano Sonata No. 1 In F Minor, Op. 2,1 – II. Adagio (4:23)
  3. Piano Sonata No. 1 In F Minor, Op. 2,1 – III. Menuetto: Allegretto (2:54)
  4. Piano Sonata No. 1 In F Minor, Op. 2,1 – IV. Prestissimo (4:54)
  5. Seven Bagatelles For Piano, Op. 33 – 1. Andante Grazioso Quasi Allegretto (3:10)
  6. Seven Bagatelles For Piano, Op. 33 – 2. Scherzo: Allegro (2:26)
  7. Seven Bagatelles For Piano, Op. 33 – 3. Allegretto (2:14)
  8. Seven Bagatelles For Piano, Op. 33 – 4. Andante (2:31)
  9. Seven Bagatelles For Piano, Op. 33 – 5. Allegro Ma Non Troppo (2:38)

Trainingdatengrösse ist 27 Minuten.

Hier einige Ergebnisse. Dateien mit „_006_m4a_init.wav“ am Ende bedeuten, dass die Initialisierung mit dem 6. Stück erfolgt ist. Ansonsten haben wir Zufallsinitialisierung durchgeführt.

Die Dateinamen zeigen  epochsample-temperature und seed.

Die Ergebnisse sind meistens nur „Müll“, aber Epoch9 hat schon erste interessante Eigenschaften erzeugt.

Viel Spass

PS: Wir haben jetzt neues Training angefangen und dafür Musikstücke im Adagio-Tempo aus den Klaviersonaten gewählt. Mal sehen, was rauskommt…