【发布时间】:2018-11-14 14:51:57
【问题描述】:
我正在尝试使用 tensorflow-gpu 和 Geforce 2080 运行 Keras MINST example。我的环境是 Linux 系统上的 Anaconda。
我正在从命令行 python 会话运行未修改的示例。我得到以下输出:
Using TensorFlow backend.
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce RTX 2080, pci bus id: 0000:01:00.0, compute capability: 7.5
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
conv2d_1/random_uniform/RandomUniform: (RandomUniform):
/job:localhost/replica:0/task:0/device:GPU:0
conv2d_1/random_uniform/sub: (Sub):
/job:localhost/replica:0/task:0/device:GPU:0
conv2d_1/random_uniform/mul: (Mul):
/job:localhost/replica:0/task:0/device:GPU:0
conv2d_1/random_uniform: (Add):
/job:localhost/replica:0/task:0/device:GPU:0
[...]
我收到的最后几行是:
training/Adadelta/Const_31: (Const): /job:localhost/replica:0/task:0/device:GPU:0
training/Adadelta/mul_46/x: (Const): /job:localhost/replica:0/task:0/device:GPU:0
training/Adadelta/mul_47/x: (Const): /job:localhost/replica:0/task:0/device:GPU:0
Segmentation fault (core dumped)
通过阅读,我认为这可能是内存问题,并添加了这些行以防止 GPU 内存不足:
config = tf.ConfigProto(log_device_placement=True)
config.gpu_options.per_process_gpu_memory_fraction=0.3
K.tensorflow_backend.set_session(tf.Session(config=config))
使用nvidia-smi 工具检查 GPU 是否实际使用(watch -n1 nvidia-smi)我可以从以下输出确认(在此运行中,per_process_gpu_memory_fraction 未设置为 1):
我怀疑 CUDA、Keras 和 Tensorflow 之间的某个版本不兼容是问题所在,但我不知道如何调试。
有哪些调试措施可以解决这个问题?还有哪些其他问题可能是导致此段错误的原因?
编辑:我做了进一步的实验,用这段代码替换模型效果很好:
model = keras.Sequential([
keras.layers.Flatten(input_shape=input_shape),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
但是一旦我像这样引入卷积层
model = keras.Sequential([
keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape),
# keras.layers.Flatten(input_shape=input_shape),
keras.layers.Flatten(),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
然后我再次遇到上述段错误。
所有数据包都已通过 Anaconda 安装。我已经安装了
- conda 4.5.11
- python 3.6.6
- keras-gpu 2.2.4
- 张量流 1.12.0
- tensorflow-gpu 1.12.0
- cudnn 7.2.1
- cudatoolkit 9.2
编辑:我在非 anaconda 环境中尝试了相同的代码,它完美无缺。我更喜欢使用 anaconda,以避免系统更新破坏。
【问题讨论】:
-
您的型号参数号和批号?
-
只是为了测试尝试使用 batchsize=1 运行你的代码
-
感谢您的回复。模型参数是链接中示例中未修改的参数。我刚刚尝试使用 batchsize = 1 并遇到了同样的问题。
-
好吧,回到基础,你的模型非常小。你根本不应该有记忆问题。你是如何安装 tensorflow-gpu 的,在哪个环境中,即 anaconda 或来自源代码、python 版本等。
-
我通过 Anaconda 安装并运行了一切。我编辑了我的问题以显示版本。
标签: python tensorflow keras