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?
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
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 create
graph\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')
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.