Python 任何解决酸洗错误的简单方法

Python 任何解决酸洗错误的简单方法,python,Python,我正在使用savez保存权重。以下是我的代码: class vgg16: def __init__(self, imgs1,imgs2, weights=None, sess=None): ......... self.weight_list=[] self.keys=[] ........ self.SaveWeights() ....neural network............ def SaveWeights(

我正在使用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
回溯(最近一次呼叫最后一次):
文件“f.py”,第350行,在
vgg=vgg16(imgs1,imgs2,'vgg16_weights.npz',sess)
文件“f.py”,第43行,在_init中__
self.SaveWeights()
保存权重中的文件“f.py”,第339行
np.savez(self,**dict(zip(self.keys,self.weight_列表)))
savez中的文件“/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py”,第574行
_savez(文件、参数、kwds、False)
文件“/usr/local/lib/python2.7/dist packages/numpy/lib/npyio.py”,第639行,在_savez中
pickle_-kwargs=pickle_-kwargs)
文件“/usr/local/lib/python2.7/dist packages/numpy/lib/format.py”,第573行,在write_数组中
pickle.dump(数组,fp,协议=2,**pickle\u-kwargs)
cPickle.PicklingError:无法pickle:属性查找\内置\模块失败
异常AttributeError:“vgg16实例在忽略中没有属性'tell'”

您需要pickle到一个文件。直接使用路径即可:

np.savez("vgg16_predict.npz", **dict(zip(self.keys, self.weight_list)))
因此,这应该是您的完整方法:

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

你需要整理成一个文件。直接使用路径即可:

np.savez("vgg16_predict.npz", **dict(zip(self.keys, self.weight_list)))
因此,这应该是您的完整方法:

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

请用正确的缩进显示完整的
def SaveWeights(self):
。这是此函数中唯一的语句我还没有名为“vgg16\u predict”的文件。这是否会引发问题?它将创建此文件。尝试我答案中的
def SaveWeights(self):
。确保使用正确的文件。你不应该再得到你的错误了。它给出了属性error,但仍然引发了error。我应该给出文件的绝对路径吗?列表是这样附加的:self.parameters+=[kernel,biases]self.keys.append('conv1_1')self.weight_list.append(self.parameters)。这可能是个问题吗?请用正确的缩进显示完整的
def SaveWeights(self):
。这是此函数中唯一的语句。我还没有名为“vgg16\u predict”的文件。这是否会引发问题?它将创建此文件。尝试我答案中的
def SaveWeights(self):
。确保使用正确的文件。你不应该再得到你的错误了。它给出了属性error,但仍然引发了error。我应该给出文件的绝对路径吗?列表是这样附加的:self.parameters+=[kernel,biases]self.keys.append('conv1_1')self.weight_list.append(self.parameters)。这可能是个问题吗?