我试图在GTX 1080上用Tensorflow训练一个非常基本的小型LSTM模型(虽然我也尝试过其他卡)。根据一些参数(比如隐藏的状态大小),经过相当规律的迭代次数后,我得到一个ResourceExhaustedError
。
该模型不仅仅是嵌入矩阵(约5000 * 300)和单层LSTM,在每个时间步长都有最终的密集投影。我已经尝试过小到1的批量大小和只有20的隐藏状态大小,但我仍然在8G卡上耗尽内存,总训练数据大小为5M。
我无法理解为什么会发生这种情况。我很明显地尝试了对Stackoverflow上讨论的相关问题的其他建议,包括。减少TF GPU选项中的per_process_gpu_memory_fraction
,但无济于事。
请参阅此处的代码:
[这并不包含一些实用程序脚本,因此不会单独运行。为了简洁,我还删除了一些功能。该代码专为多任务学习而设计,这引入了一些开销,但单任务设置中仍然存在内存问题。]
PS:有一点我知道我没有100%有效地将所有训练数据存储为numpy
数组,然后从那里采样并使用TF feed_dict
向我的模型提供数据。我相信,这可以在一定程度上减慢计算速度,但不应该导致如此严重的内存问题,对吗?