10
Apr
2021

Tensorflow und numpy 1.20.x

6 0
Lesezeit:1 min, 36 sec

In letzter Zeit häufen sich die Meldungen, dass numpy mit der Version 1.20 den Umgang mit “symbolic tensors” massiv verändert hat. Das hat Auswirkungen auf Tensorflow und Keras, die mit der neusten numpy-Version so noch nicht umgehen können. Gute Beispiele sind die Recurrenten Layer von Keras, die sich aktuell noch nicht mit numpy 1.20 verwenden lassen.

Die Lösung

Die aktuell einzige einfache Lösung ist, numpy in der Version 1.19.2 zu installieren (die ist als Minimum für Tensorflow und Keras notwendig).

In einer Anaconda-Umgebung hilft es hier im Terminal folgenden Befehl auszuführen:

conda install numpy=1.19.2

In einer normalen Python-Umgang mit pip:

pip install numpy==1.19.2 --force-reinstall

Beides entfernt das aktuelle Numpy-Paket, und installiert die von Version 1.19.2 – Danach sollte die Fehlermeldung auch verschwunden sein.

Die explizite Lösung

Das Problem mit numpy 1.20 ist ja der Umgang mit symbolischen Tensoren. Das bedeutet, dass die Tensorflow-eigene Datenstrukur des Tensors nicht mehr kompatibel zu den neuen numpy-Tensoren ist. Somit lassen sich die numpy-Operationen nicht mehr auf den sonst kompatiblen Tensorflow-Datenstrukturen ausführen. Ersetzt man nun diese Operationen durch passende aus dem Tensorflow-Paket funktioniert das auch wieder.

Beispiele:

Anstatt np.add ist tf.math.add eine Lösung, oder anstatt np.prod kann man tf.math.reduce_prod nutzen usw. Das funktioniert natürlich nur in eigenem Code, und nicht in mitgelieferten Libraries, wie Keras.

Share

You may also like...