Keras'ta beklenmeyen anahtar kelime argümanı 'düzensiz'


11

Aşağıdaki python koduyla eğitimli bir keras modeli çalıştırmaya çalışıyorum:

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 ile çalıştırdığımda, aşağıdaki hatayı alıyorum: TypeError: __init__() got an unexpected keyword argument 'ragged'

Hatanın nedeni nedir ve bu sorunu nasıl çözebilirim?

Sürümler: Keras v2.3.1 tensorflow v1.13.1

Eklemek için düzenleyin:

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 dosya bağlantısı (google sürücü)


Lütfen hata aldığınız kodun bir parçasıyla birlikte tam hata yığını izlemenizi ekleyin.
Vivek Mehta

@VivekMehta Ben tam kodu ve hata izleme ekledim, bu ne istediğini düşünüyorum? Emin değilim, özür dilerim.
zxsq

"/home/pi/Documents/converted_keras/keras_model.h5"bu tam yol mu? Mutlak yolu vermeyi deneyin.
DuDoff

@daudnadeem Evet, bu mutlak yol.
zxsq

Tam kodu ve yığın izlemeyi eklediğiniz için teşekkür ederiz. Görünüşe göre generic_utils içinde bir şey __init __ (ragged = 'bir şey') ile çağrılıyor ama bunun neden olacağından emin değilim.
rajah9

Yanıtlar:


21

Bu yüzden yukarıda öğretilebilir makineden bahsettiğiniz bağlantıyı denedim.Çıkttığınız
model ortaya çıktığında tensorflow.kerasdoğrudan kerasAPI'dan değil . Bu ikisi farklı. Bu yüzden yükleme sırasında keras API ile uyumlu olmayan tf.ragged tensörler kullanılıyor olabilir.

Sorununuz için ruh hali:

Modeliniz Tensorflow'un keras yüksek seviye api ile kaydedildiği için keraları doğrudan içe aktarmayın. Tüm içe aktarmalarınızı tensorflow.keras

Değiştir olarak değiştirin:

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

buna:

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

Sorununuzu çözecektir.

DÜZENLEME:
Tüm içe aktarma işlemleriniz, Kerasveya biçiminde olmalıdır tensorflow.keras. Aynı API olmasına rağmen, bu tür sorunları yaratan birkaç şey farklıdır. Ayrıca için tensorflowarka uç tf.kerasçünkü tercih edilir Keras 2.3.0 tensorflow dışındaki arka uçları destekleyecek son büyük sürümüdür.

Bu sürüm, TensorFlow 2.0'dan itibaren API'yi tf.keras API ile senkronize ediyor. Ancak TensorFlow 2.0 özelliklerinin çoğunu, özellikle de istekli yürütmeyi desteklemediğini unutmayın. Bu özelliklere ihtiyacınız varsa tf.keras kullanın . Bu aynı zamanda çok arka uçlu Keras'ın son büyük sürümüdür. Bundan sonra, kullanıcıların TensorFlow 2.0'da Keras kodlarını tf.keras olarak değiştirmelerini öneriyoruz.


Bu benim sorunumu çözdü. Çok teşekkür ederim :)
Manthan_Admane
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.