2017-01-30 22 views
1

私は重量を保存するためにsavezを使用しています。以下は私のコードです:酸洗いエラーを解決する簡単な解決策

class vgg16: 
    def __init__(self, imgs1,imgs2, weights=None, sess=None): 
    ......... 

     self.weight_list=[] 
     self.keys=[] 

     ........ 
    self.SaveWeights() 
....neural network............ 
def SaveWeights(self): 

    tmp = file("vgg16_predict.npz",'wb') 
    np.savez(self,**dict(zip(self.keys, self.weight_list))) 
    tmp.close 

私は酸洗エラーを取得し続けます。さまざまなソリューションが用意されています。しかし、これを実現させる最も簡単な方法はありますか? ここにトレースバックがあります:

Traceback (most recent call last): 
    File "f.py", line 350, in <module> 
    vgg = vgg16(imgs1,imgs2, 'vgg16_weights.npz', sess) 
    File "f.py", line 43, in __init__ 
    self.SaveWeights() 
    File "f.py", line 339, in SaveWeights 
    np.savez(self,**dict(zip(self.keys, self.weight_list))) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 574, in savez 
    _savez(file, args, kwds, False) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 639, in _savez 
    pickle_kwargs=pickle_kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/format.py", line 573, in write_array 
    pickle.dump(array, fp, protocol=2, **pickle_kwargs) 
cPickle.PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed 
Exception AttributeError: "vgg16 instance has no attribute 'tell'" in <bound method ZipFile.__del__ of <zipfile.ZipFile object at 0x7f812dec99d0>> ignored 

答えて

0

ファイルにピクピールする必要があります。ただ、直接パスを使用します。

def SaveWeights(self): 
    np.savez("vgg16_predict.npz", **dict(zip(self.keys, self.weight_list))) 
+0

はまだあなたの完全な 'デフSaveWeights(自己)をご提示ください同じエラー – user3102085

+0

を与える::'と右インデント

np.savez("vgg16_predict.npz", **dict(zip(self.keys, self.weight_list))) 

だから、これはあなたに完全な方法をする必要があります。 –

+0

これはこの関数の唯一の文です。 – user3102085

関連する問題