我正在使用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。这可能会占用大量内存,但我不确定是否与问题有关,我猜它是由代码中后面使用的掩码引起的填充。
非常感谢任何帮助。