当我将Elmo嵌入应用于我的数据时,我有一个错误。我有7255个句子。
embeddings = embed(
sentences,
signature="default",
as_dict=True)['default']
#Start a session and run ELMo to return the embeddings in variable x
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.tables_initializer())
x = sess.run(embeddings)错误是:
OOM :当使用shape36021075,50分配张量,并在/job上键入int32时:localhost/ ResourceExhaustedError: 0/ResourceExhaustedError:ResourceExhaustedError:0由分配器cpu [节点ResourceExhaustedError(定义为C:\Users...\envs\tf_36\lib\site-packages\tensorflow_hub\native_module.py:547) )提示:如果您希望在OOM发生时看到分配的张量列表,请将report_tensor_allocations_upon_oom添加到RunOptions以获取当前的分配信息。
发布于 2019-04-29 14:58:53
ELMo是一个大型模型。有2048维字嵌入,4096维LSTM状态在两个层和两个方向.只有这是18k浮点数,每字71 kB (还有更多:在LSTM中的中间投影,字符级CNN用于字表示)。你有7255个句子,平均每个句子有25个单词,这就给出了12 GB内存,但这是一个非常保守的估计。
您需要将这些句子分成几个批次,然后迭代地处理这些批次。如何这样做有很多种方法,我不知道您使用的是什么实现,也不知道变量sentences中到底是什么。但是,您可能可以在tf.split上调用sentences,并获得单独调用会话的对象列表,或者如果使用tf.dataset,则可以使用dataset API提供的批处理。您还可以拆分数据并使用多个输入文件。
https://stackoverflow.com/questions/55902437
复制相似问题