2017-05-29 9 views
0

HDF5ファイルのデータセットを削除しようとしています。具体的には、私は以前に訓練して保存したケラスの深い学習モデルからオプテ​​ィマイザレイヤーを削除しようとしています。KeyError:「リンクを削除できませんでした(自己を削除できません)」

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

を次のように

コードがあるとエラーが詳細に

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

エラーメッセージ

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

この問題を解決する方法上の任意の提案ですか??

ありがとうございます!

答えて

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') 
を追加します。おそらく、すでに既存のデータセットを「上書き」に
関連する問題