2016-07-26 138 views
3

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

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

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

enter image description here

的错误使用C++,所以我认为它是从TensorFlow代码来内部。有没有人看过这样的东西,或知道我可以改变什么?我觉得有足够的RAM分配,但也许我的磁盘访问配置不正确?

回答

0

最有可能没有足够的内存。对于运行TensorFlow(特别是在具有默认安装的python中),4GB非常小,适合进行培训。您的模型大小可能低于1GB,但在培训期间 - 以及在写出检查点时,TensorFlow会临时分配更多内存用于缓冲,这可能是您遇到OOM错误的原因。如果你用4GB正常运行,直到检查点,8GB应该没问题。