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

时间:2018-11-07 17:37:06

标签: tensorflow keras

我可以使用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)

及其在尝试适应时的错误。

  

UnknownError:无法获取卷积算法。这可能是   由于cuDNN无法初始化,因此请尝试查看是否有警告   日志消息已打印在上方。 [[{{node conv2d / Conv2D}} =   Conv2D [T = DT_FLOAT,data_format =“ NCHW”,膨胀= [1,1,1,1],   padding =“ VALID”,步幅= [1、1、1、1],use_cudnn_on_gpu = true,   _device =“ / job:localhost / replica:0 / task:0 / device:GPU:0”](培训/ 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 /副本:0 / task:0 / device:CPU:0”,   send_device =“ / job:localhost /副本: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 /副本:0 /任务:0 /设备:CPU:0”]]

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

2 个答案:

答案 0 :(得分:4)

我认为这个link会解决您的问题,因为您安装的cnDNN版本与在tensorflow中编译的cuDNN版本不兼容。

答案 1 :(得分:1)

我遇到了同样的问题@Wannik,我有tensorflow 1.12,CUDA 10,cudnn 7.4.1,并得到了像您一样的错误,您做了什么并安装了确切的版本才能使其正常工作?