zxs*_*xsq 30 python keras tensorflow
尝试使用以下 python 代码运行经过训练的 keras 模型:
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()
Run Code Online (Sandbox Code Playgroud)
当我使用 python3 运行它时,出现以下错误:
TypeError: __init__() got an unexpected keyword argument 'ragged'
导致错误的原因是什么,我该如何解决?
版本:Keras v2.3.1 tensorflow v1.13.1
编辑添加:
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'
Run Code Online (Sandbox Code Playgroud)
Viv*_*hta 66
所以我尝试了上面你提到的可教机器的链接,
结果证明你导出的模型来自tensorflow.keras而不是直接来自kerasAPI。这两个是不同的。因此,在加载它时可能会使用tf.ragged张量,这些张量可能与 keras API 不兼容。
您的问题的解决方案:
不要直接导入 keras,因为您的模型是使用 Tensorflow 的 keras 高级 API 保存的。将所有导入tensorflow.keras
更改为更改:
from keras.preprocessing.image import img_to_array
from keras.models import load_model
Run Code Online (Sandbox Code Playgroud)
对此:
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model
Run Code Online (Sandbox Code Playgroud)
它将解决您的问题。
编辑:
您的所有进口商品都应该来自Keras或tensorflow.keras。虽然是相同的 API,但很少有不同的东西会产生这些问题。也为tensorflow后端tf.keras是首选,因为Keras 2.3.0是最后一个主要版本将支持比tensorflow其他后端。
此版本使 API 与TensorFlow 2.0的tf.keras API同步。但是请注意,它不支持大多数 TensorFlow 2.0 功能,尤其是 Eager Execution。如果您需要这些功能,请使用tf.keras。这也是多后端 Keras 的最后一个主要版本。展望未来,我们建议用户考虑将他们的Keras代码切换到TensorFlow 2.0 中的tf.keras。
| 归档时间: |
|
| 查看次数: |
23654 次 |
| 最近记录: |