【问题标题】:Can I load a Python trained classifier in Golang?我可以在 Golang 中加载 Python 训练的分类器吗?
【发布时间】:2019-01-28 03:40:37
【问题描述】:

我正在尝试在 Golang 服务器中加载经过 Python 训练的分类器。

在 python 中,我通常会这样做:

classifier = pickle.load( open("classifier1.p", "rb"))

在 Golang 中是否有任何等价物?

我花了 3 天时间来训练数据,我已经等不及了。所以我尝试使用此代码将分类器1.p 转换为 JSON 格式。

fpkl = pickle.load( open("whatever/classifier1.p", "rb"))
fjson = open("whatever/classifier.json", "w")
json.dump(fpkl, fjson, ensure_ascii=False, sort_keys=True, indent=4)

发生错误:“管道”类型的对象不是 JSON 可序列化的

我需要一些建议。我的第一个问题是否有任何 Golang 等价物?如果没有,我该怎么做才能避免再次进行数据训练?

提前致谢。

【问题讨论】:

  • 你用的是什么分类器?它必须来自图书馆; Python 中没有内置分类器的概念。任何提供分类器的库都可以将其导出为 Golang 库知道如何读取和执行的格式。

标签: python json go


【解决方案1】:

The documentation for the Python pickle library 备注:

pickle 使用的数据格式是 Python 特定的。这 [...] 意味着非 Python 程序可能无法重建腌制的 Python 对象。

原则上,您可以读回格式(它“只是”表示对象图的字节流)并为 pickle 文件中的 Python 类名引用分配一些含义。这将高度特定于您正在阅读的特定对象格式。

我的直觉是,如果您需要 3 天时间来使用 Go-native 工具重新训练您的模型或将其导出为更中性的格式,那么这可能会比尝试解码泡菜更快、更不令人沮丧文件。

【讨论】:

  • 感谢您的回答。我就是这么想的。我可以在 python 中加载数据,将其发送到我的 tcp Go 服务器并使用 stalecucumber 库解压数据吗?
猜你喜欢
  • 2018-06-01
  • 2020-12-03
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 2021-05-13
相关资源
最近更新 更多