Versuch, ein trainiertes Keras-Modell mit dem folgenden Python-Code auszuführen:
from keras.preprocessing.image import img_to_array
from keras.models import load_model
from imutils.video import VideoStream
from threading import Thread
import numpy as np
import imutils
import time
import cv2
import os
MODEL_PATH = "/home/pi/Documents/converted_keras/keras_model.h5"
print("[info] loading model..")
model = load_model(MODEL_PATH)
print("[info] starting vid stream..")
vs = VideoStream(usePiCamera=True).start()
time.sleep(2.0)
while True:
frame = vs.Read()
frame = imutils.resize(frame, width=400)
image = cv2.resize(frame, (28, 28))
image = image.astype("float") / 255.0
image = img_to_array(image)
image = np.expand_dims(image, axis=0)
(fuel, redBall, whiteBall, none) = model.predict(image)[0]
label = "none"
proba = none
if fuel > none and fuel > redBall and fuel > whiteBall:
label = "Fuel"
proba = fuel
elif redBall > none and redBall > fuel and redBall > whiteBall:
label = "Red Ball"
proba = redBall
elif whiteBall > none and whiteBall > redBall and whiteBall > fuel:
label = "white ball"
proba = whiteBall
else:
label = "none"
proba = none
label = "{}:{:.2f%}".format(label, proba * 100)
frame = cv2.putText(frame, label, (10, 25),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
print("[info] cleaning up..")
cv2.destroyAllWindows()
vs.stop()
Wenn ich es mit python3 ausführe, wird folgende Fehlermeldung angezeigt:
TypeError: __init__() got an unexpected keyword argument 'ragged'
Was verursacht den Fehler und wie komme ich darum herum?
Versionen: Keras v2.3.1 Tensorflow v1.13.1
Bearbeiten, um hinzuzufügen:
Traceback (most recent call last):
File "/home/pi/Documents/converted_keras/keras-script.py", line 18, in <module>
model = load_model(MODEL_PATH)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/saving.py", line 492, in load_wrapper
return load_function(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/saving.py", line 584, in load_model
model = _deserialize_model(h5dict, custom_objects, compile)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/saving.py", line 274, in _deserialize_model
model = model_from_config(model_config, custom_objects=custom_objects)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/saving.py", line 627, in model_from_config
return deserialize(config, custom_objects=custom_objects)
File "/usr/local/lib/python3.7/dist-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/usr/local/lib/python3.7/dist-packages/keras/utils/generic_utils.py", line 147, in deserialize_keras_object
list(custom_objects.items())))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/sequential.py", line 301, in from_config
custom_objects=custom_objects)
File "/usr/local/lib/python3.7/dist-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/usr/local/lib/python3.7/dist-packages/keras/utils/generic_utils.py", line 147, in deserialize_keras_object
list(custom_objects.items())))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/sequential.py", line 301, in from_config
custom_objects=custom_objects)
File "/usr/local/lib/python3.7/dist-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/usr/local/lib/python3.7/dist-packages/keras/utils/generic_utils.py", line 147, in deserialize_keras_object
list(custom_objects.items())))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/network.py", line 1056, in from_config
process_layer(layer_data)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/network.py", line 1042, in process_layer
custom_objects=custom_objects)
File "/usr/local/lib/python3.7/dist-packages/keras/layers/__init__.py", line 168, in deserialize
printable_module_name='layer')
File "/usr/local/lib/python3.7/dist-packages/keras/utils/generic_utils.py", line 149, in deserialize_keras_object
return cls.from_config(config['config'])
File "/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py", line 1179, in from_config
return cls(**config)
File "/usr/local/lib/python3.7/dist-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'ragged'
python
tensorflow
keras
zxsq
quelle
quelle
"/home/pi/Documents/converted_keras/keras_model.h5"
Ist das der volle Weg? Versuchen Sie, ihm den absoluten Weg zu geben.Antworten:
Also habe ich den Link ausprobiert, über dem Sie die lehrbare Maschine erwähnt haben.
Wie sich herausstellt, stammt das von Ihnen exportierte Modell von
tensorflow.keras
und nicht direkt von derkeras
API. Diese beiden sind unterschiedlich. Während des Ladens werden möglicherweise tf.ragged- Tensoren verwendet, die möglicherweise nicht mit der Keras-API kompatibel sind.Soulution zu Ihrem Problem:
Importieren Sie Keras nicht direkt, da Ihr Modell mit Tensorflows Keras High Level API gespeichert wird. Ändern Sie alle Ihre Importe in
tensorflow.keras
Ändern:
dazu:
Es wird Ihr Problem lösen.
BEARBEITEN:
Alle Ihre Importe sollten entweder von
Keras
oder stammentensorflow.keras
. Obwohl es sich um dieselbe API handelt, unterscheiden sich einige Dinge, was zu solchen Problemen führt. Auch für dastensorflow
Backendtf.keras
wird bevorzugt, da Keras 2.3.0 die letzte Hauptversion ist, die andere Backends als Tensorflow unterstützt.quelle