Tensorflow:TFRecordDataset + Embedding_lookup + Dynamic rnn - >内存泄漏

时间:2018-02-17 11:43:46

标签: python tensorflow memory-leaks rnn

我正在使用SequenceExample为序列标记任务准备功能。最重要的功能是包含每个输入标记的字符ID的数组,例如[[0, 1, 3], [1, 4, 5, 6], ...].

由于它是一个多维数组,我使用VarLenFeature和tf.sparse_tensor_to_dense在TFRecordDataset中进行解析,如https://stackoverflow.com/a/43672956/9373240中所述。

我将此密集向量提供给可训练的tf.nn.embedding_lookup,然后使用此嵌入方式提供双向动态gru。

在训练期间,内存使用量随批量大小而增加,批量大小为256时,最高可达30GB。此外,对于小批量,需要大步数的训练分区。 我猜有一个内存泄漏,但我找不到原因/原因。 RunMetadata通过bi-gru上的渐变显示了巨大的内存使用量。

另外,我正在获得UserWarning:将稀疏的IndexedSlices转换为未知形状的密集Tensor。这可能会占用大量内存,但我不确定是否与问题有关,我猜它是由代码中后面使用的掩码引起的填充。

非常感谢任何帮助。

0 个答案:

没有答案