2017-05-29 7 views
0

Ich versuche, ein Dataset in einer HDF5-Datei zu löschen. Um genau zu sein, versuche ich die Optimierungsschicht aus einem Keras Deep Learning Modell zu löschen, das ich zuvor trainiert und gespeichert habe.KeyError: "Verknüpfung konnte nicht gelöscht werden (Selbst kann nicht gelöscht werden)"

Der Code ist wie folgt

f = h5py.File('model.h5', 'r+') 
del f['optimizer_weights'] 
f.close() 

Und der Fehler

KeyError: "Couldn't delete link (Can't delete self) 

Fehlermeldung im Detail

del f['optimizer_weights'] 
    File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (D:\Build\h5py\h5py-2.7.0\h5py\_objects.c:2853) 
    File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (D:\Build\h5py\h5py-2.7.0\h5py\_objects.c:2811) 
    File "C:\Users\Anaconda3\envs\tensorflow-keras-gpu\lib\site-packages\h5py\_hl\group.py", line 297, in __delitem__ 
    self.id.unlink(self._e(name)) 
    File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (D:\Build\h5py\h5py-2.7.0\h5py\_objects.c:2853) 
    File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (D:\Build\h5py\h5py-2.7.0\h5py\_objects.c:2811) 
    File "h5py\h5g.pyx", line 294, in h5py.h5g.GroupID.unlink (D:\Build\h5py\h5py-2.7.0\h5py\h5g.c:4179) 
KeyError: "Couldn't delete link (Can't delete self)" 

Vorschläge, wie dies zu beheben ??

Danke!

Antwort

0

Sind Sie sicher, dass der Datensatz tatsächlich da drin ist? Ich habe diesen falsch aussehenden Fehler erhalten, als ich versuchte, ein nicht existierendes Dataset zu löschen.

def printname(name): 
    print(name) 

f.visit(printname) 

# list of datasets, should contain 'dataset_name' 

Im Code müssen Sie leider eine Überprüfung auf Existenz vor dem Löschen jedes Mal, umfassen. Zu ‚überschreiben‘ eine eventuell bereits vorhandene Datenmenge:

with h5py.File('/path/to/h5', 'a') as f: 
    if f.get('dataset_name'): 
     del f['dataset_name'] 
    f['dataset_name'] = 'new value' 
0

Ganz eine alte Frage, aber versuchen, die Datei in Schreib setzen oder anhängen Modus

f = h5py.File('model.h5', 'a') 
Verwandte Themen