相关疑难解决方法(0)

在keras中使用预训练的gensim Word2vec嵌入

我在gensim训练过word2vec.在Keras,我想用它来制作句子矩阵使用那个词嵌入.由于存储所有句子的矩阵,因此空间和内存效率很低.因此,我想在Keras中实现嵌入层以实现这一点,以便可以在其他层(LSTM)中使用它.你能详细告诉我怎么做吗?

PS:它与其他问题不同,因为我使用gensim进行word2vec训练而不是keras.

python gensim word2vec keras word-embedding

6
推荐指数
2
解决办法
4774
查看次数

Keras使用预训练的嵌入初始化大嵌入层

我试图通过使用预训练的嵌入和自定义语料库在带有Tensorflow后端的Keras 2中重新训练word2vec模型。

这是我使用预训练的嵌入初始化嵌入层的方式:

embedding = Embedding(vocab_size, embedding_dim,
                      input_length=1, name='embedding',
                      embeddings_initializer=lambda x: pretrained_embeddings)
Run Code Online (Sandbox Code Playgroud)

x pretrained_embeddings的大矩阵在哪里vocab_sizeembedding_dim

只要pretrained_embeddings不是太大,就可以使用。

在我的情况很不幸,这是不是这样的- vocab_size=2270872embedding_dim=300

初始化Embeddings层后,出现错误:

Cannot create a tensor proto whose content is larger than 2GB.

这个错误来自该函数add_weight()/opt/r/anaconda3/lib/python3.6/site-packages/keras/engine/base_layer.py,更具体如下一行:

weight = K.variable(initializer(shape),
                    dtype=dtype,
                    name=name,
                    constraint=constraint)
Run Code Online (Sandbox Code Playgroud)

initializer是上面的lambda函数,它返回大矩阵。shape(2270872, 300)前面已经提到。

是否可以解决这个问题而不必进行低级Tensorflow编程?如果我将Theano用作后端,则代码运行良好,但我想使用Tensorflow以获得更好的长期前景。

我发现的唯一类似的Stackoverflow问题是this,它提出了占位符变量,但是我不确定如何在Keras级别上应用它们。

非常感谢

编辑: 我非常愿意在Tensorflow后端的级别上解决此问题。只是我不知道在这种情况下如何在同一应用程序中组合Tensorflow和Keras代码。大多数示例是一个或另一个,而不是两者。

例如,当Keras中的Embeddings层的初始化不可避免地调用add_weight()函数时,Tensorflow占位符变量有什么用?

解:

正如@ blue-phoenox的注释所暗示的那样,我重新编写了如下代码:

embedding = Embedding(vocab_size, embedding_dim,
                      input_length=1, 
                      name='embedding')
embedding.build(input_shape=(1,)) # the input_shape here has no effect …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow

5
推荐指数
1
解决办法
1317
查看次数

在 keras 中使用带有 LSTM nn 的 Gensim Fasttext 模型

我已经在非常短的句子(最多 10 个单词)的语料库上使用 Gensim 训练了 fasttext 模型。我知道我的测试集包括不在我的训练语料库中的词,即我的语料库中的一些词像“催产素”、“Lexitocin”、“Ematrophin”、“Betaxitocin”

给定测试集中的一个新词,fasttext 非常清楚地知道通过使用字符级别 n-gram 生成一个与训练集中其他相似词具有高余弦相似度的向量

如何将 fasttext 模型合并到 LSTM keras 网络中,而不会丢失 fasttext 模型到词汇表中的向量列表?因为那样的话,即使 fasttext 做得很好,我也不会处理任何 OOV。

任何的想法?

nlp gensim keras tensorflow word-embedding

4
推荐指数
1
解决办法
1930
查看次数

标签 统计

keras ×3

gensim ×2

tensorflow ×2

word-embedding ×2

nlp ×1

python ×1

word2vec ×1