python 3.でmachinelearingを作成しようとしていますが、コードをコンパイルしようとしています。Cuda10.0/cuDNN 7.5.0でこのエラーが発生しました。誰か助けてくれますか?
RTX 2080
現在:Keras(2.2.4)tf-nightly-gpu(1.14.1.dev20190510)
Cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
コードエラー:tensorflow.python.framework.errors_impl.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.
これが私のコードです:
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))
model.summary()
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(x, y, epochs=1, batch_size=n_batch)
Shape [24946,32,48,48]でテンソルを割り当て、アロケータGPU_0_bfcによって/ job:localhost/replica:0/task:0/device:GPU:0にfloatと入力すると、OOM
Tensorflow 2.0、CUDA 10.0、CUDNN 7.5を使用すると、以下が機能しました。
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)
古くなったTensorflow 1.x構文を使用する他のいくつかの回答(ここではvenergiacによる回答など)があります。最新のテンソルフローを使用している場合は、ここで提供したコードを使用する必要があります。
次のエラーが発生した場合:
Physical devices cannot be modified after being initialized
次に、gpus = tf.config
... tensorflowをインポートする直下の行、つまり.
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)
Tensorflow 2.0を使用している場合は、Rokoの回答が機能するはずです。
メモリの正確な量を制限したい場合(例:1024MBまたは2GBなど)、GPUメモリの使用を制限する別の方法があります。
このコードを使用してください:
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)])
except RuntimeError as e:
print(e)
このコードは、最初のGPUのメモリ使用を最大1024MBに制限します。必要に応じて、gpusのインデックスとmemory_limitを変更するだけです。