Problem nach Update auf TF 2.0

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Huhu, ich habe heute auf Tensorflow-gpu 2.0 geupdatet davor lief alles super.
Nun nicht mehr :roll:
Ich habe auch das Upgrade-Script (tf-nightly...) verwendet welches mir 0 Issues angezeigt hat...

Hier mal das Script:

Code: Alles auswählen

import pickle
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten, Dropout
from keras.layers.normalization import BatchNormalization
from keras.utils import to_categorical
import tensorflow as tf
import keras
import numpy as np
import cv2
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # dont show warnings from Tensorflow

testing_image_path = "data/test.p"
training_image_path = "data/train.p"
validation_image_path = "data/valid.p"

with open(training_image_path, mode='rb') as file:
    train = pickle.load(file)
with open(testing_image_path, mode='rb') as file:
    test = pickle.load(file)
with open(validation_image_path, mode='rb') as file:
    valid = pickle.load(file)

X_train, y_train = train['features'], train['labels']
X_test, y_test = test['features'], test['labels']
X_valid, y_valid = valid['features'], valid['labels']

print("Trainingsdaten:", len(X_train))
print("Testdaten:", len(y_test))
print("Validierungsdaten:", len(X_valid))
print("Bilddimensionen:", np.shape(X_train[1]))
print("Anzahl der Klassen:", len(np.unique(y_train)))

n_classes = 43

model = Sequential()

model.add(Dense(64, activation='relu', input_shape=(32, 32, 3,)))
model.add(BatchNormalization())

model.add(Dense(128, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))

model.add(Dense(128, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))

model.add(Flatten())

model.add(Dense(128, activation='relu'))
model.add(BatchNormalization())

model.add(Dense(n_classes, activation='softmax'))

model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

X_train_baseline = X_train.reshape(len(X_train), 32, 32, 3).astype('float32')
X_valid_baseline = X_valid.reshape(len(X_valid), 32, 32, 3).astype('float32')
y_train_baseline = keras.utils.to_categorical(y_train, n_classes)
y_valid_baseline = keras.utils.to_categorical(y_valid, n_classes)

model.fit(X_train_baseline, y_train_baseline, batch_size=128, epochs=10, verbose=1, validation_data=(X_valid_baseline, y_valid_baseline))

X_test_baseline = X_test.reshape(len(X_test), 32, 32, 3).astype('float32')
y_test_baseline = keras.utils.to_categorical(y_test, n_classes)

model.evaluate(X_test_baseline, y_test_baseline, verbose=0)

model.save('traffic_signs_100epochs.h5', save_format='h5')
Und der Fehler:

Code: Alles auswählen

PS C:\Users\felix\Desktop\traffic_helper> & D:/Programme/Anaconda/python.exe c:/Users/felix/Desktop/traffic_helper/trafficnet.py
Using TensorFlow backend.
Traceback (most recent call last):
  File "c:/Users/felix/Desktop/traffic_helper/trafficnet.py", line 2, in <module>
    from keras.models import Sequential
  File "D:\Programme\Anaconda\lib\site-packages\keras\__init__.py", line 3, in <module>
    from . import utils
  File "D:\Programme\Anaconda\lib\site-packages\keras\utils\__init__.py", line 6, in <module>
    from . import conv_utils
  File "D:\Programme\Anaconda\lib\site-packages\keras\utils\conv_utils.py", line 9, in <module>
    from .. import backend as K
  File "D:\Programme\Anaconda\lib\site-packages\keras\backend\__init__.py", line 89, in <module>
    from .tensorflow_backend import *
  File "D:\Programme\Anaconda\lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>
    import tensorflow as tf
ModuleNotFoundError: No module named 'tensorflow'
Vlt. hat ja jmd. schon Erfahrungen damit gemacht bzw. das selbe Problem gehabt ...
MfG Felix
Benutzeravatar
ThomasL
User
Beiträge: 1378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Keras ist jetzt Teil von Tensorflow
https://www.tensorflow.org/guide/keras
Versuch es mal so:

Code: Alles auswählen

import tensorflow as tf

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten, Dropout
from tensorflow.keras.layers.normalization import BatchNormalization
from tensorflow.keras.utils import to_categorical

import numpy as np
import cv2
import os
Das (alte) eigenständige Keras Modul kann/sollte deinstalliert werden.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
PyMy
User
Beiträge: 2
Registriert: Samstag 2. November 2019, 09:31

Wie Thomas schon schrieb hast du hier einen Mix aus der keras "standalone" library und "embeded" keras aus tensorflow. Beide Versionen sind aber nicht (!) identisch.

Du solltest komplett auf tf.keras wechseln, da die "standalone" keras library nicht mehr weiterentwickelt wird. Version 2.3 ist die letzte. Der Grund ist, dass Cognitive Toolkit CNTK und Theano nicht mehr weiterentwickelt werden und schon jetzt die Kombi tensorflow / keras zu über 90% genutzt wurde.
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Vielen Dank euch beiden habs mittlerweile gefixt :)
PS: from tensorflow.keras.layers.normalization import BatchNormalization liegt jetzt direkt unter layers ein Blick in die Doku war erfolgreich :D
Besten Dank MfG Felix
Antworten