tensorflow学习笔记:jupyter notebook使用tensorflow-gpu或Keras训练卷积时jupyter服务重启问题解决

jupyter notebook使用tensorflow-gpu或Keras训练卷积时jupyter服务重启问题解决

最近利用jupyter notebook训练tensorflow卷积神经网络的时候,遇到了一次服务似乎挂掉了,但会立刻重启的问题。原以为它重启之后 就没问题了,但是重启了n多遍还是不行。
tensorflow学习笔记:jupyter notebook使用tensorflow-gpu或Keras训练卷积时jupyter服务重启问题解决_第1张图片
在网上直接照这个问题似乎没有找到对应的答案,自己踩了坑得爬出来才行。下面记录一下检查以及解决过程。

首先把jupyter notebook中的代码移到pycharm中运行了一遍,发现只有日志信息输出,其他什么都没有。这不是软件带来的问题。

接着,我在tf.Session中加入了一些print输出一些信息进行调错,发现在加载数据集的地方出现了问题。这是想到了内存不足的问题,但是我在任务管理器中看到内存剩余挺多的,然后GPU利用率挺高的。如果不是资源不足问题,那么问题出在那里?

好吧。就是资源分配问题没有处理好,我们在Session中配置一下就可以了。代码如下:

os.environ["CUDA_VISIBLE_DEVICES"] = '0'   #指定第一块GPU可用
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.5  # 程序最多只能占用指定gpu50%的显存
config.gpu_options.allow_growth = True      #程序按需申请内存
with tf.Session(config = config) as sess:
	#接着写程序代码

重点是config.gpu_options.allow_growth = True这一句 ,它用于程序按需申请内存。

针对Keras

(更新于2019-12-27)如果Keras出现这个问题可以这么做:

import keras.backend.tensorflow_backend as ktf
import tensorflow as tf
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "1"

config = tf.ConfigProto()
config.gpu_options.allow_growth=True   #不全部占满显存, 按需分配
sess = tf.Session(config=config)
ktf.set_session(sess)

是因为Keras默认占满GPU资源的。

写在最后

在踩坑过程中还研究了另外一个关于GPU的问题(想看点我),问题的出现就是为了让我们更好地了解事物,希望可以帮到你。
欢迎各位大佬在评论区中留下宝贵的意见,带我进步。

你可能感兴趣的:(tensorflow学习笔记)