ข้อผิดพลาด CUDNN: ไม่สามารถรับอัลกอริทึมแบบ Convolution


1

ฉันมีปัญหาในการใช้งานเครือข่ายการแปลงบน Keras ด้วยการสร้าง Tensorflow ที่คอมไพล์ด้วยซอร์ส ฉันใช้ CUDA 10.0 และ CuDNN 7.4 และทั้งคู่ได้รวบรวมอย่างถูกต้องตามที่ตรวจสอบโดยตัวอย่าง makefiles ฉันได้รับข้อผิดพลาดเหล่านี้เมื่อฉันเรียกใช้ Conv net แต่ไม่ใช่เครือข่ายที่หนาแน่น:

UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
 [[{{node conv2d_1/convolution}}]]
 [[metrics/acc/Mean/_169]]

ฉันได้ลองต่อท้ายเส้นทางไปที่ CUDA และ CuDNN โดยตรงกับเส้นทางของฉันลองติดตั้งใหม่และคอมไพล์ TensorFlow อีกครั้งโดยไม่มีผลลัพธ์ ไม่ควรมีปัญหาใด ๆ กับเวอร์ชันที่ขัดแย้งกันเนื่องจากเป็นการติดตั้งใหม่ในเครื่องนี้

import keras
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D, Dropout
from keras.datasets import mnist
import sys

def one_hot(data, num_categories):
    oh = np.zeros((len(data),num_categories))
    for i,entry in enumerate(data):
        oh[i, entry] = 1
    return oh


# import data
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# preprocess data
x_train = x_train.reshape( (60000,28,28,1) ) / 256
x_test = x_test.reshape( (10000,28,28,1) ) / 256
y_train = one_hot(y_train, 10)
y_test = one_hot(y_test, 10)

# build the model
model = Sequential()
input_shape=(28,28,1)
model.add(Conv2D(filters=32,
                 kernel_size=(3,3),
                 activation='relu',
                 input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2,2),
                       strides=(2,2)))
model.add(Conv2D(filters=32,
                 kernel_size=(3,3),
                 activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2),
                       strides=(2,2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(units=256,
                activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=10,
                activation='softmax'))

# load model weight

# compile model
model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
model.summary()

# train
num_epochs = 20
if num_epochs != 0:
    # train the model
    model.fit(x_train, y_train,
              batch_size=32,
              epochs=num_epochs)

# evaluate model
score = model.evaluate(x_test, y_test)
print('\nScore: ', score)

รหัสที่ฉันใช้อยู่นั้นทำงานได้ดีบนแล็ปท็อปของฉันซึ่งไม่มี GPU เฉพาะ แต่ฉันพยายามที่จะทำให้ CUDA / CuDNN ทำงานบนเดสก์ท็อป ความช่วยเหลือใด ๆ ที่วินิจฉัยปัญหานี้จะได้รับการชื่นชมมาก

UPDATE: ดูเหมือนว่าอาจมีข้อผิดพลาดเกี่ยวกับการใช้ NCCL เริ่มต้นซึ่งตรงข้ามกับเวอร์ชันใหม่ล่าสุดเมื่อสร้าง TF จากแหล่งที่มา ฉันกำลังพยายามติดตั้ง NCCL เวอร์ชันไม่เชื่อเรื่องพระเจ้าของระบบปฏิบัติการล่าสุด สิ่งนี้กำลังนำข้อผิดพลาดใหม่: ldconfig แสดงรายการ NCCL แต่ไม่พบไลบรารีของมัน สิ่งนี้ทำให้ฉันเป็นไปไม่ได้ที่จะสร้างจากแหล่งที่มาด้วย NCCL ล่าสุดดังนั้นฉันไม่สามารถดูว่านี่เป็นสาเหตุที่แท้จริงหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.