登陆

无法获得卷积算法。这可能是因为cuDNN无法初始化,

admin 2022-11-25 5人围观 ,发现0个评论

在Tensorflow / Keras中,从https://github.com/pierluigiferrari/ssd_keras运行代码时,请使用估算器:ssd300_evaluation。我收到此错误。

无法获得卷积算法。这可能是因为cuDNN初始化失败,所以请尝试查看上面是否打印了警告日志消息。

这与未解决的问题非常相似:Google Colab错误:无法获得卷积算法。这可能是因为cuDNN初始化失败

我正在运行的问题:

的Python:3.6.4。

Tensorflow版本:1.12.0。

Keras版本:2.2.4。

CUDA:V10.0。

cuDNN:V7.4.1.5。

NVIDIA GeForce GTX 1080.

Also I ran:

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)) 

With no errors or issues.

The minimalist example is:

 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) 

waterproof.. 7

我看到此错误消息的原因有三个,使用了不同的解决方案:

1.您有缓存问题

我经常通过关闭python进程,删除~/.nv目录(在linux上rm -rf ~/.nv)并重新启动Python进程来解决此错误。我不完全知道为什么会这样。它可能至少部分与第二种选择有关:

2.您的内存不足

如果显示卡RAM用完了,该错误也会显示出来。使用nvidia GPU,您可以使用来检查图形卡的内存使用情况nvidia-smi。这不仅可以让您读出正在使用的GPU RAM的数量(类似,6025MiB / 6086MiB如果您快要达到极限了),还可以列出正在使用GPU RAM的进程的列表。

如果RAM用完了,则需要重新启动进程(这将释放RAM),然后采取内存占用较少的方法。一些选项是:

减少批量

使用更简单的模型

使用更少的数据

限制TensorFlow GPU内存比例:例如,以下操作可确保TensorFlow使用的RAM小于等于90%:

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)) 

如果不与上面的项目一起使用,这可能会减慢模型评估的速度,大概是因为大数据集必须进出,以适应您分配的少量内存。

3.您具有不兼容的CUDA,TensorFlow,NVIDIA驱动程序等版本。

如果您从来没有使用过类似的模型,那么您就不会用完VRAM 并且您的缓存是干净的,我将使用最佳的可用安装指南返回并设置CUDA + TensorFlow-我在以下方面获得了最大的成功请参阅https://www.tensorflow.org/install/gpu上的说明,而不是NVIDIA / CUDA网站上的说明。



1> waterproof..:

我看到此错误消息的原因有三个,使用了不同的解决方案:

1.您有缓存问题

我经常通过关闭python进程,删除~/.nv目录(在linux上rm -rf ~/.nv)并重新启动Python进程来解决此错误。我不完全知道为什么会这样。它可能至少部分与第二种选择有关:

2.您的内存不足

如果显示卡RAM用完了,该错误也会显示出来。使用nvidia GPU,您可以使用来检查图形卡的内存使用情况nvidia-smi。这不仅可以让您读出正在使用的GPU RAM的数量(类似,6025MiB / 6086MiB如果您快要达到极限了),还可以列出正在使用GPU RAM的进程的列表。

如果RAM用完了,则需要重新启动进程(这将释放RAM),然后采取内存占用较少的方法。一些选项是:

减少批量

使用更简单的模型

使用更少的数据

限制TensorFlow GPU内存比例:例如,以下操作可确保TensorFlow使用的RAM小于等于90%:

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)) 

如果不与上面的项目一起使用,这可能会减慢模型评估的速度,大概是因为大数据集必须进出,以适应您分配的少量内存。

3.您具有不兼容的CUDA,TensorFlow,NVIDIA驱动程序等版本。

如果您从来没有使用过类似的模型,那么您就不会用完VRAM 并且您的缓存是干净的,我将使用最佳的可用安装指南返回并设置CUDA + TensorFlow-我在以下方面获得了最大的成功请参阅https://www.tensorflow.org/install/gpu上的说明,而不是NVIDIA / CUDA网站上的说明。

请发表您的评论
Powered By Z-BlogPHP