केरस में अनपेक्षित कीवर्ड तर्क 'रैग्ड'


11

निम्नलिखित पायथन कोड के साथ एक प्रशिक्षित केरस मॉडल चलाने की कोशिश कर रहा है:

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'

त्रुटि का कारण क्या है, और मैं इसके आसपास कैसे पहुंचूं?

संस्करण: केरस v2.3.1 टेंसरफ़्लो 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'

h5 फ़ाइल लिंक (Google ड्राइव)


कृपया अपनी पूरी त्रुटि स्टैक ट्रेस जोड़ें, कोड के उस हिस्से के साथ जहां आपको त्रुटि हो रही है।
विवेक मेहता

@VivekMehta मैंने पूर्ण कोड और त्रुटि ट्रेस जोड़ दिया है, मुझे लगता है कि आपने यही पूछा है? यह निश्चित नहीं है, क्षमा करें।
zxsq

"/home/pi/Documents/converted_keras/keras_model.h5"क्या यह पूरा रास्ता है? इसे पूर्ण मार्ग देने का प्रयास करें।
ड्यूडॉफ

@daudnadeem हाँ, यह इसका पूर्ण मार्ग है।
zxsq

पूर्ण कोड और स्टैक ट्रेस जोड़ने के लिए धन्यवाद। ऐसा लगता है कि जेनेरिक_यूटिल्स में कुछ __init __ (ragged = 'something') के साथ कहा जा रहा है, लेकिन यह निश्चित नहीं है कि ऐसा क्यों होगा।
रजवाह

जवाबों:


21

इसलिए मैंने ऊपर लिंक की कोशिश की, जिसका आपने चाय पीने की मशीन का उल्लेख किया है,
क्योंकि यह आपके द्वारा निर्यात किए गए मॉडल से है tensorflow.kerasऔर सीधे kerasएपीआई से नहीं है। ये दोनों अलग हैं। इसलिए लोड करते समय यह tf.ragged टेनर्स का उपयोग कर सकता है जो कि केरस एपीआई के साथ संगत नहीं हो सकता है।

अपने मुद्दे के प्रति सतर्कता:

अपने मॉडल को टेन्सरफ़्लो के केरस हाई लेवल एपी के साथ सहेजने के रूप में सीधे केरस को आयात न करें। अपने सभी आयात tensorflow.keras

बदलें बदलें:

from keras.preprocessing.image import img_to_array
from keras.models import load_model

इसके लिए:

from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model

यह आपकी समस्या को हल कर देगा।

संपादित करें:
अपने आयात की सभी, या तो से होना चाहिए Kerasया tensorflow.keras। हालांकि एक ही एपीआई होने के नाते कुछ चीजें अलग होती हैं जो इस तरह के मुद्दे बनाती हैं। tensorflowबैकएंड के लिए भी tf.kerasपसंद किया जाता है, क्योंकि केरेस 2.3.0 अंतिम प्रमुख रिलीज है जो टेंसफ्लो के अलावा अन्य बैकेंड का समर्थन करेगा।

यह रिलीज़ Tf.keras API के साथ TensorFlow 2.0 के समान ही API लाती है। हालांकि ध्यान दें कि यह विशेष रूप से उत्सुक निष्पादन में, ज्यादातर TensorFlow 2.0 सुविधाओं का समर्थन नहीं करता है। यदि आपको इन सुविधाओं की आवश्यकता है, तो tf.keras का उपयोग करें । यह मल्टी-बैकेंड केर का आखिरी प्रमुख रिलीज भी है। आगे बढ़ते हुए, हम अनुशंसा करते हैं कि उपयोगकर्ता TensorFlow 2.0 में अपने Keras कोड को tf.keras पर स्विच करने पर विचार करें ।


इससे मेरा मुद्दा ठीक हो गया। बहुत बहुत धन्यवाद :)
मंथन_आदमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.