소스 컴파일 된 Tensorflow 빌드로 Keras에서 컨볼 루션 네트워크를 실행하는 데 문제가 있습니다. CUDA 10.0과 CuDNN 7.4를 사용하고 있으며 makefile 예제에서 확인한대로 모두 올바르게 컴파일되었습니다. 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을 시작 하여이 데스크탑에서 실행하려고합니다. 이 문제를 진단하는 데 도움이 될 것입니다.
업데이트 : 소스에서 TF를 빌드 할 때 최신 버전이 아닌 기본 NCCL 사용과 관련된 오류가있는 것 같습니다. 최신 NCCL의 OS 독립적 버전을 설치하려고합니다. ldconfig는 NCCL을 나열하지만 라이브러리를 찾을 수 없습니다. 이로 인해 최신 NCCL로 소스를 빌드 할 수 없으므로 이것이 근본 원인인지 확인할 수 없습니다.