【问题标题】:Inconsistency of pickle.load() and pickle.dump()pickle.load() 和 pickle.dump() 不一致
【发布时间】:2018-08-09 21:42:13
【问题描述】:

我正在构建神经网络,应该在 modified CIFAR-10 上进行测试。我使用keras.datasets.cifar10.load_data() 检索数据集,然后使用pickle.load(datafile, encoding='bytes') 在字典中解析它。经过一些修改后,我使用 pickle.dump() 以类似 keras 的格式编写了图像。

我注意到pickle.dump() 之后的结果文件比源文件大53 个字节。即使我不做任何修改并在load() 之后立即使用dump(),结果文件也有额外的53 个字节。看起来结果文件的结构没有被违反,因为我能够从中恢复图像、标签、文件名并且它们是正确的。但是,如果我正在学习和测试神经网络(即使是 example 中最简单的 NN!),我的分数也会非常差(~0.5)。

  1. 请帮我弄清楚如果总体结构没有改变,加载-倾倒如何影响 NN 的结果?
  2. 如何加载和转储以保持文件结构和大小不变? 如何避免load-dump操作的不一致?

附:看起来dump() 将一些标头写入文件并且如果标头已经存在则不写入(我尝试两次应用加载转储,但大小仅在第一次应用时发生变化)。但是我怎样才能避免写这个标题呢?

【问题讨论】:

    标签: image-processing neural-network keras pickle


    【解决方案1】:

    请帮助我弄清楚负载转储如何影响 NN 如果结构一般不改变,结果如何?

    如果结构不变,对网络没有影响。您可以使用人类可读的输出进行简单转储并比较文件。首先阅读协议here

    如何加载和转储以保留文件的结构和大小 没有变化?如何避免load-dump的不一致 操作?

    没有真正的不一致,它可能只是使用另一个协议或附加标头。您不应该处理这些内部问题。如果您想让您的模型具有人类可读性或将其置于版本控制之下,您可以使用 json 或其他人类 readbale 协议。 (例如simplejson)

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多