VirtualBox内存exception – 使用TensorFlow和Docker的std :: bad_alloc

我有一个Python应用程序,我正在使用TensorFlow,并在Docker容器中运行它。 在本地运行时,我看到内存使用情况仍然低于4GB的RAM,但是有一些大文件正在写入和处理。 当TensorFlow达到创build它的第一个检查点文件时,我得到以下exception:

terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc 

我的模型很复杂,所以这个文件可能大于1GB,而且我的数据是图像,所以我已经下载了大约30GB的数据,只是为了开始运行模型,所以我不知道这是否偶然发生在这里或如果这个文件实际上太大了。 我只是将一小批图像加载到内存中进行每个时代的模型训练,所以我试图保持内存使用率低。 我的VirtualBoxconfiguration看起来像这样:

在这里输入图像说明

错误似乎是使用C ++,所以我认为它来自内部的TensorFlow代码。 有没有人看到过这样的事情,或者知道我能改变什么? 我觉得有足够的RAM分配,但也许我的磁盘访问configuration不正确?

很可能没有足够的内存。 4GB是非常小的运行TensorFlow(特别是在默认安装的Python)进行培训。 你的模型大小可能低于1GB,但是在训练过程中(当写出一个检查点时),TensorFlow会暂时分配更多的内存用于缓冲,这可能是你得到OOM错误的地方。 如果你正常运行正常与4GB直到检查点,8GB应该罚款。