【问题标题】:How to store Word vector Embeddings?如何存储词向量嵌入?
【发布时间】:2020-10-23 21:50:55
【问题描述】:

0

我正在使用 BERT Word Embeddings 进行具有 3 个标签的句子分类任务。我正在使用 Google Colab 进行编码。我的问题是,由于每次重新启动内核时都必须执行嵌入部分,有没有办法在生成这些词嵌入后保存它们?因为,生成这些嵌入需要很长时间。

我用来生成 BERT Word Embeddings 的代码是 -

[get_features(text_list[i]) for text_list[i] in text_list]

这里,gen_features 是一个函数,它为我的列表 text_list 中的每个 i 返回词嵌入。

我读到将嵌入转换为颠簸张量,然后使用 np.save 可以做到这一点。但我其实不知道怎么写代码。

请帮忙。

【问题讨论】:

    标签: python-3.x keras nlp word-embedding bert-language-model


    【解决方案1】:

    您可以按照以下步骤将嵌入数据保存到 numpy 文件中:

    all_embeddings = here_is_your_function_return_all_data()
    all_embeddings = np.array(all_embeddings)
    np.save('embeddings.npy', all_embeddings)
    

    如果您要保存到 google colab,则可以将其下载到本地计算机。需要时,只需上传并加载即可。

    all_embeddings = np.load('embeddings.npy')
    

    就是这样。

    顺便说一句,您也可以直接将文件保存到谷歌驱动器。

    【讨论】:

    • 假设我的 all_embeddings 是一个嵌入列表,因为我对获取字符串列表而不是单个字符串的嵌入更感兴趣。在这种情况下 np.array 是否仍然有效?
    • 是的,它会起作用的。但请确保列表中的所有嵌入形状/大小都相同。如果不是,您将不得不使用另一个参数来加载您的数据。 x= np.load('file.npy', pickle=True).
    • 抱歉回复延迟。我运行它并且它起作用了。我已将答案标记为正确。另外,请也对这个问题进行投票。谢谢。
    • 如果我直接将嵌入转储到泡菜文件中,它不会起作用吗?我读到 pkl 文件保持原样。
    • @theProcrastinator 是的,它会起作用的。 Pickle 显然可以处理大多数带有状态的类型和对象。
    猜你喜欢
    • 2019-02-24
    • 2018-02-14
    • 2017-11-30
    • 2018-08-22
    • 2018-12-16
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多