我可以使用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
已经包含该文件夹。
答案 0 :(得分:4)
我认为这个link会解决您的问题,因为您安装的cnDNN版本与在tensorflow中编译的cuDNN版本不兼容。
答案 1 :(得分:1)
我遇到了同样的问题@Wannik,我有tensorflow 1.12,CUDA 10,cudnn 7.4.1,并得到了像您一样的错误,您做了什么并安装了确切的版本才能使其正常工作?