webentwicklung-frage-antwort-db.com.de

Fehler beim Abrufen des Faltungsalgorithmus. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte.

Verwenden Sie in Tensorflow/Keras beim Ausführen des Codes unter https://github.com/pierluigiferrari/ssd_keras den Schätzer: ssd300_evaluation. Ich habe diesen Fehler erhalten. 

Fehler beim Abrufen des Faltungsalgorithmus. Dies ist wahrscheinlich darauf zurückzuführen, dass die Initialisierung von cuDNN fehlgeschlagen ist. Versuchen Sie daher zu prüfen, ob oben eine Warnmeldung ausgegeben wurde.

Dies ist der ungelösten Frage sehr ähnlich: Google Colab-Fehler: Fehler beim Abrufen des Faltungsalgorithmus. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte

Mit der Ausgabe laufe ich:

python: 3.6.4.

Tensorflow-Version: 1.12.0.

Keras Version: 2.2.4.

CUDA: V10.0.

cuDNN: V7.4.1.5.

NVIDIA GeForce GTX 1080.

Auch ich lief:

import tensorflow as tf
with tf.device('/gpu:0'):
      a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
      b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
      c = tf.matmul(a, b)
with tf.Session() as sess:
print (sess.run(c))

Ohne Fehler oder Probleme.

Das minimalistische Beispiel ist: 

 from keras import backend as K
 from keras.models import load_model
 from keras.optimizers import Adam
 from scipy.misc import imread
 import numpy as np
 from matplotlib import pyplot as plt

 from models.keras_ssd300 import ssd_300
 from keras_loss_function.keras_ssd_loss import SSDLoss
 from keras_layers.keras_layer_AnchorBoxes import AnchorBoxes
 from keras_layers.keras_layer_DecodeDetections import DecodeDetections
 from keras_layers.keras_layer_DecodeDetectionsFast import DecodeDetectionsFast
 from keras_layers.keras_layer_L2Normalization import L2Normalization
 from data_generator.object_detection_2d_data_generator import DataGenerator
 from eval_utils.average_precision_evaluator import Evaluator
 import tensorflow as tf
 %matplotlib inline
 import keras
 keras.__version__



 # Set a few configuration parameters.
 img_height = 300
 img_width = 300
 n_classes = 20
 model_mode = 'inference'


 K.clear_session() # Clear previous models from memory.

 model = ssd_300(image_size=(img_height, img_width, 3),
            n_classes=n_classes,
            mode=model_mode,
            l2_regularization=0.0005,
            scales=[0.1, 0.2, 0.37, 0.54, 0.71, 0.88, 1.05], # The scales 
 for MS COCO [0.07, 0.15, 0.33, 0.51, 0.69, 0.87, 1.05]
            aspect_ratios_per_layer=[[1.0, 2.0, 0.5],
                                     [1.0, 2.0, 0.5, 3.0, 1.0/3.0],
                                     [1.0, 2.0, 0.5, 3.0, 1.0/3.0],
                                     [1.0, 2.0, 0.5, 3.0, 1.0/3.0],
                                     [1.0, 2.0, 0.5],
                                     [1.0, 2.0, 0.5]],
            two_boxes_for_ar1=True,
            steps=[8, 16, 32, 64, 100, 300],
            offsets=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
            clip_boxes=False,
            variances=[0.1, 0.1, 0.2, 0.2],
            normalize_coords=True,
            subtract_mean=[123, 117, 104],
            swap_channels=[2, 1, 0],
            confidence_thresh=0.01,
            iou_threshold=0.45,
            top_k=200,
            nms_max_output_size=400)

 # 2: Load the trained weights into the model.

 # TODO: Set the path of the trained weights.
 weights_path = 'C:/Users/USAgData/TF SSD 
 Keras/weights/VGG_VOC0712Plus_SSD_300x300_iter_240000.h5'

 model.load_weights(weights_path, by_name=True)

 # 3: Compile the model so that Keras won't complain the next time you load it.

 adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

 ssd_loss = SSDLoss(neg_pos_ratio=3, alpha=1.0)

 model.compile(optimizer=adam, loss=ssd_loss.compute_loss)


dataset = DataGenerator()

# TODO: Set the paths to the dataset here.
dir= "C:/Users/USAgData/TF SSD Keras/VOC/VOCtest_06-Nov-2007/VOCdevkit/VOC2007/"
Pascal_VOC_dataset_images_dir = dir+ 'JPEGImages'
Pascal_VOC_dataset_annotations_dir = dir + 'Annotations/'
Pascal_VOC_dataset_image_set_filename = dir+'ImageSets/Main/test.txt'

# The XML parser needs to now what object class names to look for and in which order to map them to integers.
classes = ['background',
           'aeroplane', 'bicycle', 'bird', 'boat',
           'bottle', 'bus', 'car', 'cat',
           'chair', 'cow', 'diningtable', 'dog',
           'horse', 'motorbike', 'person', 'pottedplant',
           'sheep', 'sofa', 'train', 'tvmonitor']

dataset.parse_xml(images_dirs=[Pascal_VOC_dataset_images_dir],
                  image_set_filenames=[Pascal_VOC_dataset_image_set_filename],
                  annotations_dirs=[Pascal_VOC_dataset_annotations_dir],
                  classes=classes,
                  include_classes='all',
                  exclude_truncated=False,
                  exclude_difficult=False,
                  ret=False)



evaluator = Evaluator(model=model,
                      n_classes=n_classes,
                      data_generator=dataset,
                      model_mode=model_mode)



results = evaluator(img_height=img_height,
                    img_width=img_width,
                    batch_size=8,
                    data_generator_mode='resize',
                    round_confidences=False,
                    matching_iou_threshold=0.5,
                    border_pixels='include',
                    sorting_algorithm='quicksort',
                    average_precision_mode='sample',
                    num_recall_points=11,
                    ignore_neutral_boxes=True,
                    return_precisions=True,
                    return_recalls=True,
                    return_average_precisions=True,
                    verbose=True)
1
Steve-0 Dev.

Ich hatte diesen Fehler und habe ihn behoben, indem ich alle CUDA- und cuDNN-Versionen von meinem System deinstallierte. Dann habe ich CUDA Toolkit 9.0 (ohne Patches) und cuDNN v7.4.1 für CUDA 9.0 installiert.

1
gatefun

Ich habe diese Fehlermeldung aus drei verschiedenen Gründen mit unterschiedlichen Lösungen gesehen:

1. Sie haben Cache-Probleme

Ich arbeite regelmäßig an diesem Fehler, indem ich meinen python -Prozess beende, das ~/.nv - Verzeichnis entferne (unter Linux rm -rf ~/.nv) Und das Python neu starte. Prozess. Ich weiß nicht genau, warum das funktioniert. Es hängt wahrscheinlich zumindest teilweise mit der zweiten Option zusammen:

2. Sie haben keinen Speicher mehr

Der Fehler kann auch auftreten, wenn der RAM der Grafikkarte nicht mehr ausreicht. Mit einer NVIDIA-GPU können Sie die Speichernutzung der Grafikkarte mit nvidia-smi Überprüfen. Auf diese Weise können Sie nicht nur ablesen, wie viel GPU RAM Sie verwenden (etwa 6025MiB / 6086MiB, Wenn Sie fast am Limit sind), sondern auch eine Liste der Prozesse anzeigen mit GPU RAM.

Wenn Ihnen der Arbeitsspeicher ausgeht, müssen Sie den Prozess neu starten (wodurch der Arbeitsspeicher freigegeben wird) und dann weniger speicherintensiv vorgehen. Einige Optionen sind:

  • reduzierung Ihrer Losgröße
  • mit einem einfacheren Modell
  • mit weniger Daten
  • beschränken des TensorFlow-GPU-Speicheranteils: Mit dem folgenden Beispiel wird sichergestellt, dass TensorFlow <= 90% Ihres Arbeitsspeichers verwendet:
import keras
import tensorflow as tf

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9
keras.backend.tensorflow_backend.set_session(tf.Session(config=config))

Dies kann Ihre Modellbewertung verlangsamen, wenn es nicht zusammen mit den oben genannten Elementen verwendet wird. Vermutlich muss der große Datensatz ein- und ausgelagert werden, damit er in den von Ihnen zugewiesenen kleinen Speicherbereich passt.

3. Sie haben inkompatible Versionen von CUDA-, TensorFlow-, NVIDIA-Treibern usw.

Wenn Sie noch nie ähnliche Modelle hatten, wird Ihnen der VRAM und der Cache nicht ausgehen, ich würde zurückgehen und einrichten CUDA + TensorFlow unter Verwendung der besten verfügbaren Installationsanleitung - Ich hatte den größten Erfolg, wenn ich den Anweisungen unter https://www.tensorflow.org/install/gp gefolgt bin, anstatt denen auf der NVIDIA/CUDA-Site .

6
waterproof

Das Problem liegt in der Inkompatibilität neuerer Versionen von tensorflow 1.10.x plus Versionen mit cudnn 7.0.5 und cuda 9.0. Die einfachste Lösung ist das Herabstufen des Tensorflusses auf 1.8.0

pip install --upgrade tensorflow-gpu == 1.8.0

1
Mainak Dutta

1) Schließen Sie alle anderen Notebooks, die eine GPU verwenden

2) TF 2.0 benötigt cuDNN SDK (> = 7.4.1)

entpacken und fügen Sie den Pfad zum Ordner 'bin' unter "Umgebungsvariablen/Systemvariablen/Pfad" hinzu: "D:\Programme\x64\Nvidia\cudnn\bin"

0
AndrewPt

In meinem Fall ist dieser Fehler aufgetreten, als ich das Modell direkt aus den Dateien .json und .h5 geladen und versucht habe, die Ausgabe für bestimmte Eingaben vorherzusagen. Daher habe ich vor dem Ausführen eines solchen Vorgangs versucht, ein Beispielmodell auf mnist zu trainieren, das es dem cudNN ermöglichte, Folgendes zu initialisieren:enter image description here

0
Anurag Bhalekar

Das Problem kann auch auftreten, wenn eine inkompatible Version von cuDNN vorhanden ist. Dies kann der Fall sein, wenn Sie Tensorflow mit conda installiert haben, da conda während der Installation von Tensorflow auch CUDA und cuDNN installiert.

Die Lösung besteht darin, den Tensorflow mit pip zu installieren und CUDA und cuDNN getrennt ohne Bedingung zu installieren, z. Wenn Sie CUDA 10.0.130 und cuDNN 7.4.1 ( getestete Konfigurationen ) haben, dann

pip install tensorflow-gpu==1.13.1
0
kHarshit

Ich hatte eine Woche lang mit diesem Problem zu kämpfen. Der Grund war sehr dumm: Ich habe hochauflösende Fotos für das Training verwendet.

Hoffentlich spart das jemandem Zeit :)

0
Paktalin

Ich hatte dieses Problem nach dem Upgrade auf TF2.0. Folgendes hat angefangen, einen Fehler zu melden:

   outputs = tf.nn.conv2d(images, filters, strides=1, padding="SAME")

Ich verwende Ubuntu 16.04.6 LTS (Azure Datascience VM) und TensorFlow 2.0. Upgrade gemäß Anleitung zu dieser TensorFlow-GPU Seite . Dies löste das Problem für mich. Übrigens, es gibt eine Menge apt-get-Updates/-Installationen, und ich habe alle ausgeführt.

0
RadV