【发布时间】:2020-12-08 01:30:44
【问题描述】:
我有一个主要包含文本和 json 文件的目录,以及一个二进制文件(MXNet.Block.save_parameters 神经网络的输出)。
我想压缩这个文件夹然后腌制它。假设我有一个 zip 文件对象:
from zipfile import ZipFile
import os, pickle, itertools
files = list(itertools.chain(*[
map(lambda x: os.path.join(root, x), files)
for root, directories, files in os.walk('model-artifacts/')
]))
zfile = ZipFile('mymode.l.zip', 'w')
for file in file_paths:
zfile.write(file)
我真的不能腌制它:
pickle.dumps(zfile)
# TypeError: cannot serialize '_io.BufferedRandom' object
我想知道是否有办法腌制 zip 文件或腌制目录的内容。
为什么?
我不是自己做酸洗,而是使用一个库Metaflow 来酸洗其中的对象,所以我想找到一种方法来用Metaflow 存储我的模型
【问题讨论】:
-
您正在将压缩数据写入磁盘上的路径。你想让泡菜代表什么?它应该代表文件路径吗?它应该代表压缩数据吗?如果是第二种选择,为什么要写入磁盘?
-
是的,你是对的 :( 我不认为我知道我在这里做什么,我可能需要尝试更好地理解泡菜......问题是我不能泡菜我的@987654326直接@对象,它给出一个错误:
AttributeError: Can't pickle local object 'SimpleFeedForwardNetworkBase.__init__.<locals>.<lambda>'。我想如果我只加载模型工件(json文件和二进制文件),那么我正在使用的框架将知道如何腌制它,然后我知道如何处理下游... -
作为另一个旁注:我使用的框架 (
Metaflow) 腌制对象并将它们上传到云端。我可以自己做,但我更喜欢使用框架访问所有内容。 -
你的模型类是你自己写的吗?如果是这样,请查看
__init__方法并将 lambdas 转换为模块级辅助函数。 -
否 :(。这是来自
MXNet的课程,无法真正更改。
标签: python deep-learning pickle mxnet netflix-metaflow