首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras中意外的关键字参数'ragged‘

Keras中意外的关键字参数'ragged‘
EN

Stack Overflow用户
提问于 2019-11-15 21:50:36
回答 2查看 25.2K关注 0票数 30

尝试使用以下python代码运行经过训练的keras模型:

代码语言:javascript
复制
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()

当我用python3运行它时,我得到了以下错误:TypeError: __init__() got an unexpected keyword argument 'ragged'

是什么导致了这个错误,我该如何避免呢?

版本: Keras v2.3.1 tensorflow v1.13.1

编辑以添加:

代码语言:javascript
复制
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'

h5 file link (google drive)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-16 00:43:40

所以我尝试了上面你提到的teachable machine的链接

事实证明,您导出的模型是从tensorflow.keras导出的,而不是直接从keras应用编程接口导出的。这两个是不同的。因此,在加载它时,可能会使用与keras API不兼容的tf.ragged张量。

您的问题的解决方案:

不要直接导入keras,因为您的模型是用Tensorflow的keras高级api保存的。将所有导入更改为tensorflow.keras

更改:

代码语言:javascript
复制
from keras.preprocessing.image import img_to_array
from keras.models import load_model

要这样做:

代码语言:javascript
复制
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model

它会解决你的问题。

编辑:

您的所有导入都应该来自Kerastensorflow.keras。尽管API是相同的,但几乎没有什么不同的东西,这就造成了这些问题。此外,对于tensorflow后端,tf.keras是首选,因为Keras 2.3.0是支持tensorflow以外的后端的最后一个主要版本。

从TensorFlow 2.0开始,此版本使

tf.keras API保持同步。但是请注意,它不支持大多数TensorFlow 2.0特性,特别是急切执行。如果您需要这些功能,请使用tf.keras。这也是多后端Keras的最后一个主要版本。展望未来,我们建议用户考虑在TensorFlow 2.0中将他们的Keras代码切换到tf.keras

票数 66
EN

Stack Overflow用户

发布于 2020-11-05 05:53:19

正如@Vivek Mehta所说,首先将load_model从keras更改为tensorflow.keras,即

代码语言:javascript
复制
from tensorflow.keras.models import load_model

但即便如此,如果模型加载显示错误,如KeyError: 'sample_weight_mode',请执行以下操作

代码语言:javascript
复制
from tensorflow.keras.models import load_model

model = load_model('model.h5', compile = False)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58878421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档