StackGAN 泡菜错误

Posted

技术标签:

【中文标题】StackGAN 泡菜错误【英文标题】:StackGAN pickle error 【发布时间】:2018-09-09 22:45:33 【问题描述】:

我正在尝试从this repo 运行代码,这意味着我必须使这个get_data 函数工作:

def get_data(self, pickle_path, aug_flag=True):
    with open(pickle_path + self.image_filename, 'rb') as f:
        images = pickle.load(f)   # <--------- THIS line is the problem
        images = np.array(images)
        print('images: ', images.shape)
    # do more things here

但它给了我错误ValueError: unsupported pickle protocol: 3 ,所以我找到了建议here,他们推荐了不同的协议:pickle.dump(images, f, protocol=2)

def get_data(self, pickle_path, aug_flag=True):
    with open(pickle_path + self.image_filename, 'rb') as f:
        pickle.dump(images, f, protocol=2)   # still bad
        images = np.array(images)
        print('images: ', images.shape)
    # do more things here

但是,这给了我错误UnboundLocalError: local variable 'images' referenced before assignment。有没有办法解决这个问题,特别是StackGAN/misc/datasets.py

【问题讨论】:

只做other_images = np.array(images) 您尝试遵循的建议是告诉您如何首先更改生成文件的代码,以便创建一个 Pickle 库实现的文件只支持protocol-2的可以加载。它并没有告诉您如何加载以错误格式创建的文件。 【参考方案1】:

我找到了答案here:

def get_data(self, pickle_path, aug_flag=True):
    with open(pickle_path + self.image_filename, 'rb') as f:
        pickle.dump(pickle.load(sys.stdin), sys.stdout, 2)  # <----- *****
        images = np.array(images)
        print('images: ', images.shape)
    # do more things here

StackGAN 提供用 Python3 腌制的文件,我需要将它们转换为 Python2 协议

【讨论】:

糟糕;这不起作用。一会儿看一下cmets的建议

以上是关于StackGAN 泡菜错误的主要内容,如果未能解决你的问题,请参考以下文章

泡菜错误断言id(obj)不在self.memo中

Python 酸洗错误:TypeError:对象泡菜未返回列表。 numpy的问题?

torch_10_stackGAN++

加载泡菜 NotFittedError:CountVectorizer - 未安装词汇

泡菜模块出错。 AttributeError:类没有属性“__new__”

python中的数据pickle错误[重复]