在python tensorflow工作簿执行后取消分配内存

为了限制内存使用量,我阅读了如何防止张量分配整个GPU内存? 并试过这段代码:

# Assume that you have 12GB of GPU memory and want to allocate ~4GB: gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) 

这些命令确实释放了内存,但是在代码完成之后内存不会被解除分配。 此问题描述: https : //github.com/tensorflow/tensorflow/issues/3701build议的修复程序是更新驱动程序“将GPU驱动程序从352.79升级到367.35(最新的)之后,问题消失。 “不幸的是,我不能更新到最新版本的驱动程序。 这个问题是否已经解决。

我还考虑将可用内存限制在docker容器中。 阅读https://devblogs.nvidia.com/parallelforall/nvidia-docker-gpu-server-application-deployment-made-easy/ states“容器可以被限制在一个系统上有限的一组资源上(例如一个CPU内核和1GB的内存)“,但内核目前不支持这个,在这里我尝试添加1GB的内存到新的docker实例:

 nvidia-docker run -m 1024m -d -it -p 8889:8889 -v /users/user1234/jupyter:/notebooks --name tensorflow-gpu-1GB tensorflow/tensorflow:latest-cpu 

但是这不会显示为接收警告:警告:您的内核不支持交换限制function,内存有限,无需交换。

tensorflow python工作簿完成后有没有命令来释放内存?

 Update 

杀死/重新启动笔记本电脑后,内存将被分配。 但是如何在笔记本内完成后才能释放内存。

Ipython和jupyter笔记本电脑不会释放内存,除非您在对象上使用delxdel

https://ipython.org/ipython-doc/3/interactive/magics.html

%xdel:删除一个variables,试图从IPython的机器引用的地方清除它。 默认情况下,它使用用户命名空间中的命名对象的标识来移除其他名称下的引用。 该对象也从输出历史中删除。