title: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize,
body: <p>In Tensorflow/ Keras when running the code from <a href="https://github.com/pierluigiferrari/ssd_keras" rel="noreferrer">https://github.com/pierluigiferrari/ssd_keras</a>, use the estimator: ssd300_evaluation. I received this error. </p>
  
  <blockquote>
    <p>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.</p>
  </blockquote>
  
  <p>This is very similar to the unsolved question: <a href="https://stackoverflow.com/questions/53414185/google-colab-error-failed-to-get-convolution-algorithm-this-is-probably-becaus">Google Colab Error : Failed to get convolution algorithm.This is probably because cuDNN failed to initialize</a></p>
  
  <p>With the issue I'm running:</p>
  
  <p>python: 3.6.4.</p>
  
  <p>Tensorflow Version: 1.12.0.</p>
  
  <p>Keras Version: 2.2.4.</p>
  
  <p>CUDA: V10.0.</p>
  
  <p>cuDNN: V7.4.1.5.</p>
  
  <p>NVIDIA GeForce GTX 1080.</p>
  
  <p>Also I ran:</p>
  
  <pre><code>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))
  </code></pre>
  
  <p>With no errors or issues.</p>
  
  <p>The minimalist example is: </p>
  
  <pre><code> 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)
  </code></pre>