Seite 1 von 1

Problem nach Update auf TF 2.0

Verfasst: Freitag 1. November 2019, 20:11
von Felix92
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

Re: Problem nach Update auf TF 2.0

Verfasst: Samstag 2. November 2019, 10:44
von ThomasL
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.

Re: Problem nach Update auf TF 2.0

Verfasst: Samstag 2. November 2019, 11:44
von PyMy
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.

Re: Problem nach Update auf TF 2.0

Verfasst: Samstag 2. November 2019, 19:29
von Felix92
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