webentwicklung-frage-antwort-db.com.de

Nur-Lese-Modus in Keras

Ich habe ein Kerasmodell zur Schätzung der menschlichen Pose aus diesem Link geklont Schätzung der menschlichen Pose

Wenn ich versuche, das Modell auf Google Colab zu laden, erhalte ich die folgende Fehlermeldung

code

from keras.models import load_model
model = load_model('model.h5')

error

ValueError                                Traceback (most recent call 

last)
<ipython-input-29-bdcc7d8d338b> in <module>()
      1 from keras.models import load_model
----> 2 model = load_model('model.h5')

/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py in load_model(filepath, custom_objects, compile)
    417     f = h5dict(filepath, 'r')
    418     try:
--> 419         model = _deserialize_model(f, custom_objects, compile)
    420     finally:
    421         if opened_new_file:

/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py in _deserialize_model(f, custom_objects, compile)
    219         return obj
    220 
--> 221     model_config = f['model_config']
    222     if model_config is None:
    223         raise ValueError('No model found in config.')

/usr/local/lib/python3.6/dist-packages/keras/utils/io_utils.py in __getitem__(self, attr)
    300             else:
    301                 if self.read_only:
--> 302                     raise ValueError('Cannot create group in read only mode.')
    303                 val = H5Dict(self.data.create_group(attr))
    304         return val

ValueError: Cannot create group in read only mode.

Kann mir jemand bitte helfen, diesen schreibgeschützten Modus zu verstehen? Wie lade ich dieses Modell?

1

Hier ist ein Beispiel für ein von Google Collab erstelltes Git Gist: https://Gist.github.com/kolygri/835ccea6b87089fbfd64395c3895c01f

So weit ich das verstehe:

Sie müssen die Architektur Ihres Modells festlegen und definieren und dann model.load_weights ('alexnet_weights.h5') verwenden.

Hier ist ein nützlicher Github-Konversationslink, der Ihnen hoffentlich hilft, das Problem besser zu verstehen: https://github.com/keras-team/keras/issues/6937

4

Ich hatte ein ähnliches Problem und löste es auf diese Weise

store das graph\architecture im JSON Format und weights in h5 Format

import json

# lets assume `model` is main model 
model_json = model.to_json()
with open("model_in_json.json", "w") as json_file:
    json.dump(model_json, json_file)

model.save_weights("model_weights.h5")

dann muss load model zuerst zu creategraph\architecture und load_weights im Modell

from keras.models import load_model
from keras.models import model_from_json
import json

with open('model_in_json.json','r') as f:
    model_json = json.load(f)

model = model_from_json(model_json)
model.load_weights('model_weights.h5')
6
Akhilesh

Ich habe callbacks.ModelCheckpoint Zum Speichern der Gewichte verwendet und hatte einen ähnlichen Fehler. Ich habe herausgefunden, dass es einen Parameter namens save_weights_only Gibt.

Wenn ich save_weights_only=True Setze, wird beim Laden des Modells mit load_model () in einem anderen Prozess die Meldung "Kann keine Gruppe im schreibgeschützten Modus erstellen" ausgegeben. Error.

Wenn ich save_weights_only=False (Dies ist die Standardeinstellung) setze, kann ich load_model () zum Laden des Modells und zur Vorhersage verwenden, ohne das Modell zuerst zu kompilieren.

0
handhand