【问题标题】:How Can I save And reuse One hot encoding in keras?如何在 keras 中保存和重用一种热编码?
【发布时间】:2021-07-15 10:48:10
【问题描述】:

我正在做一个与 NLP 相关的项目。然后我在 google colab 中使用 One hot encoding 进行文本表示然后我将它放入 LSTM。 这是我的代码:

from tensorflow.keras.preprocessing.text import one_hot
voc_size=13000
onehot_repr=[one_hot(words,voc_size)for words in X1] 

模型看起来不错,但是当我想保存它以使用新文本进行预测时,我使用 pickle 保存它:

 import pickle
 with open("one_hot", "wb") as f: 
     pickle.dump(one_hot, f)

但是当我重新启动 colab 并再次加载保存的 one_hot 时,代表单词的数字是不同的。

  • 有什么方法可以保存 Onehot 并在 colab 中获得相同的结果?

因为我无法保存一个热编码以供其他时间使用,所以我将一个热表示保存为列表并稍后通过索引访问它:

## load save model
from tensorflow.keras.models import load_model
my_model=load_model("model9419.h5")

##load oneHot representation
with open('/content/drive/MyDrive/last_model/on_hot.json', 'rb') as f:
    oneHot=json.load(f)

为了预测一个单词,我使用简单的数组访问元素来找到一个单词的一个热门表示。

  • 这是进行预测的正确方法吗?还有比这更好的方法吗?

  • 如果我可以保存 OneHot 函数,我如何在烧瓶服务器中使用?

  • 还有人可以推荐简单的单词表示,可以保存在烧瓶中使用并且更好吗?

【问题讨论】:

    标签: machine-learning deep-learning nlp


    【解决方案1】:

    首先,创建一个 one-hot dict,然后将其转换为 pandas DataFrame 并保存该 DataFrame 的 .csv。例如。

    import pandas as pd
    from tensorflow.keras.preprocessing.text import one_hot
    onehot_dict = {}
    voc_size = 3
    
    for words in ['this', 'that', 'then']:
        onehot_dict[words] = one_hot(words, voc_size)
    
    onehot_df = pd.DataFrame(onehot_dict)
    onehot_df.to_csv('./onehot.csv', index=False)
    

    【讨论】:

    • 没有办法直接保存onehot函数吧?
    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2020-01-30
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    相关资源
    最近更新 更多