【问题标题】:cannot train Keras convolution network on GPU无法在 GPU 上训练 Keras 卷积网络
【发布时间】:2019-04-11 04:47:06
【问题描述】:

我可以使用keras.datasets.fashion_mnist 数据集训练具有Dense 层的 Keras 网络。但是,当我尝试训练卷积网络时,出现错误。

以下是部分代码:

from tensorflow.keras.layers import *

model = keras.Sequential([
        Convolution2D(16, (3,3), activation='relu', input_shape=(28,28,1)),
        MaxPooling2D(pool_size=(2,2)),
        Flatten(),
        Dense(16, activation='relu'),
        Dense(10, activation='softmax')    
])
model.compile(optimizer=tf.train.AdamOptimizer(), 
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

当我尝试适应时它的错误。

UnknownError:获取卷积算法失败。这大概是 因为cuDNN初始化失败,所以试试看是否有警告 上面打印了日志消息。 [[{{节点 conv2d/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](training/TFOptimizer/gradients/conv2d/Conv2D_grad/Conv2DBackpropFilter-0-TransposeNHWCToNCHW-LayoutOptimizer, conv2d/Conv2D/ReadVariableOp)]] [[{{节点 loss/dense_1_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2/_69}} = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_112_l...t/Switch_2", tensor_type=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

我在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin 中有cudnn64_7.dll,而PATH 已经包含该文件夹。

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    我觉得这个link可以解决你的问题,因为你安装的cnDNN版本和tensorflow编译的cuDNN版本不兼容。

    【讨论】:

    • 我使用的是 TensorFlow GPU 版本 1.12.0 CUDA 9.0。我复制了一个新的 CUDNN 库及其作品。谢谢。
    猜你喜欢
    • 2019-01-26
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多