我使用预留向量来创建嵌入,如下所示
import numpy
import gensim
import tensorflow
ft_model=gensim.models.KeyedVectors.load_word2vec_format("ft_model.vec")
vocabulary=ft_model.vocab
embeddings=numpy.array([ft_model.word_vec(x) for x in vocabulary.keys()])
vocabulary_size=len(vocabulary)
embedding_size=embeddings.shape[1]
W=tensorflow.Variable(
tensorflow.constant(0.0, shape=[vocabulary_size, embedding_size]),
trainable=False,
name="W"
)
embedding_placeholder=tensorflow.placeholder(
tensorflow.float32,[vocabulary_size,embedding_size],
name="fasttext_vector"
)
embedding_init=W.assign(embedding_placeholder)
data_placeholder=tensorflow.placeholder(tensorflow.int32,shape=[None, max_length])
embedding_layer=tensorflow.nn.embedding_lookup(W, data_placeholder)在它短暂地运行了一两个训练批之后,我得到了一个错误,代码完全崩溃了!
ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[5000,14621,100]堆栈跟踪cleary声明这是由embedding_layer=tensorflow.nn.embedding_lookup(W, data_placeholder)行引起的。知道这是什么原因吗? 100是嵌入大小,但其他数字(5,000,14621)是相当奇怪的,比我所列举的还要大,似乎导致TensorFlow完全消耗了所有的图形处理器内存!嵌入查找似乎是一件很常见的事情,而我正在合并的.vec文件非常小。
发布于 2020-10-03 22:05:04
可能是您的计算机内存(RAM)不足。在启动模型之前,先看一下任务管理器。我有16 GB的内存,容量是79%,所以内存用完了。使用jupyter笔记本查看准备好数据后剩余的Ram数量可能会有所帮助
https://stackoverflow.com/questions/48552542
复制相似问题