无法在GPU上训练Keras卷积网络

wan*_*nik 14 keras tensorflow

我可以Dense使用keras.datasets.fashion_mnist数据集训练带有图层的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)
Run Code Online (Sandbox Code Playgroud)

当我试图适应时它的错误.

UnknownError:无法获得卷积算法.这可能是因为cuDNN无法初始化,因此请尝试查看上面是否打印了警告日志消息.[[{{node 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)]] [[{{node 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 = "/作业:本地主机/复制:0 /任务:0 /装置:CPU:0"]]

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

Vin*_*ang 7

我认为此链接可以解决您的问题,因为您安装的cnDNN版本与在tensorflow中编译的cuDNN版本不兼容。