2017-01-30 1 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

관련 문제