web-dev-qa-db-ja.com

GPUでKeras畳み込みネットワークをトレーニングできない

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の初期化に失敗したためです。そのため、上記の警告ログメッセージが出力されているかどうかを確認してください。 [[{{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 = "/ job:localhost/replica:0/task:0/device:CPU:0"]]

cudnn64_7.dllC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\binがあり、PATHには既にそのフォルダーが含まれています。

13
wannik

これは link で問題が解決すると思います。これは、インストールしたcnDNNバージョンがtensorflowでコンパイルしたcuDNNバージョンと互換性がないためです。

6
Vincent Tang

私は同じ問題@Wannikを手に入れました、私はテンソルフロー1.12、CUDA 10、cudnn 7.4.1を持っています、そしてあなたと同じエラーを受け取ります、あなたはそれを動作させるために正確なバージョンで何をしてインストールしましたか?

1
David Wagih