2017-05-29 64 views
0

我试图删除HDF5文件中的数据集。具体来说,我试图从我之前训练和保存的keras深度学习模型中删除优化器层。KeyError:“无法删除链接(无法删除自己)”

的代码如下

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

和误差是详细

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)" 

上如何解决这一问题的任何建议

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

错误消息??

谢谢!

回答

0

你确定数据集实际上在那里吗?尝试删除不存在的数据集时,出现此错误的外观错误。

def printname(name): 
    print(name) 

f.visit(printname) 

# list of datasets, should contain 'dataset_name' 

在代码中你不幸需要之前删除每次包括支票存在。要“覆盖”一个可能已经存在的数据集:

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

相当一个老问题,但尝试把该文件中写入或追加模式

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