如何保存一个热编码器?

Cur*_*ner 5 python pandas keras tensorflow one-hot-encoding

我正在尝试从 keras 保存一个热编码器,以便在不同的文本上再次使用它,但保持相同的编码。

这是我的代码:

df = pd.read_csv('dataset.csv ')
vocab_size = 200000
encoded_docs = [one_hot(d, vocab_size) for d in df.text]
Run Code Online (Sandbox Code Playgroud)

如何保存该编码器并稍后再次使用?

我在研究中发现了这一点,但 one_hot() 似乎是一个函数而不是一个对象(抱歉,如果这是完全错误的,我对 python 相当陌生)。

小智 9

为了社区的利益,在本节中提及答案(尽管它出现在评论部分中)。

要保存编码器,您可以使用以下代码:

import pickle
with open("encoder", "wb") as f: 
    pickle.dump(one_hot, f)
Run Code Online (Sandbox Code Playgroud)

然后要加载保存的编码器,请使用以下代码:

encoder = pickle.load(f) 
encoded_docs =[encoder(d, vocab_size) for d in df.text]
Run Code Online (Sandbox Code Playgroud)

由于该函数from.keras.preprocessing.text import one_hot用于hash()生成准唯一编码,因此我们需要使用 aHashSeed来重现结果(即使多次执行后也能得到相同的结果)。

在终端中运行以下代码以进行设置HashSeed

在此输入图像描述


Mem*_*eng 5

前面的答案很棒,我找到了另一个需要 joblib 的可用选项

from joblib import dump, load
dump(clf, 'filename.joblib') # save the model
clf = load('filename.joblib') # load and reuse the model
Run Code Online (Sandbox Code Playgroud)