Python 未知错误:使用Tensorflow gpu运行LSTM时无法获取卷积算法

Python 未知错误:使用Tensorflow gpu运行LSTM时无法获取卷积算法,python,tensorflow,keras,deep-learning,gpu,Python,Tensorflow,Keras,Deep Learning,Gpu,我正在尝试使用tensorflow gpu运行RNN,因为使用CPU处理1个历元(列车中8000个图像/测试中2000个图像)花费了我大约13分钟的时间。然而,我尝试了几次在我的Windows 10上安装tensorflow gpu,但都未能成功运行。我有以下配置: GPU 1:NVIDIA GeForce GTX 1650 GPU 0:Intel(R)UHG图形630 CPU:Intel(R)Core(TM)i7-9750H CPU@2.60GHz 我在pip中的virtualenv Tens

我正在尝试使用tensorflow gpu运行RNN,因为使用CPU处理1个历元(列车中8000个图像/测试中2000个图像)花费了我大约13分钟的时间。然而,我尝试了几次在我的Windows 10上安装tensorflow gpu,但都未能成功运行。我有以下配置:

GPU 1:NVIDIA GeForce GTX 1650 GPU 0:Intel(R)UHG图形630 CPU:Intel(R)Core(TM)i7-9750H CPU@2.60GHz

我在pip中的virtualenv Tensorflow中安装了以下组件:

我遵循了以下教程:

此外,由于这是一个热门问题,我尝试了其他主题中建议的不同解决方案,如:

  • tensorflow gpu/CUDA/Cudnn之间的兼容性(我尝试了不同的组合CUDA 9.0/…)
  • 我将我的tensoflow gpu降级到1.8.0,但没有工作
目前,我有tensorflow gpu 2.00、CUDA 10.0、Cudnn 7.4.1.5,这似乎与所定义的兼容() Visual studio已安装,最新的驱动程序已安装在我的英特尔卡上

<>但是我也发现英伟达GTX 1650在CUDA(Nodia)GPU中没有提到,不知道这是否是问题? 我收到的错误消息是:未知错误:无法获取卷积算法。这可能是因为cuDNN未能初始化,所以请尝试查看上面是否打印了警告日志消息。[作品:第二辑]

from tensorflow.keras import backend
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory('dataset/training_set',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'binary')

test_set = test_datagen.flow_from_directory('dataset/test_set',
                                            target_size = (64, 64),
                                            batch_size = 32,
                                            class_mode = 'binary')

classifier.fit_generator(training_set,
                         steps_per_epoch = 8000,
                         epochs = 25,
                         validation_data = test_set,
                         validation_steps = 2000)

你的图片都是RGB吗?我得到这个错误是因为模型和数据之间的维度错误

  • 如果图像为灰度,则它们将有一个通道:
    (64,64,1)
    ,并且与模型的输入形状
    (64,64,3)
    不兼容
  • 如果您的图像是RGBA,它们将有4个通道,这也是不兼容的
花些时间检查生成器的结果:

print('training data shapes:')
for i in range(len(training_set)):
    print(training_set[i][0].shape)

print('\ntest data shapes:')
for i in range(len(test_set)):
    print(test_set[i][0].shape)

还需要一些时间来绘制生成器及其类中的一些图像。

这些图像是基于RGB的。我没想到问题来自代码,因为它来自课程教程本身(Udemy的A-Z深度学习)。我得到以下结果:(32,64,64,3)没有让它运行所有图像,因为我有10000个。也许你可以让它运行所有图像,以防万一。。。检查循环中的
断言img.shape[-1]==3
。您的代码似乎完全正常。也许你的问题确实和我的不一样。所以我的训练数据形状:(32,64,64,3)和测试数据形状:(32,64,64,3)以及明显的1例形状(16,64,64,3)。在何处添加断言img.shape[-1]==3?在放入循环时,它给出了错误“img”未找到。
img=training\u set[i][0]
。但根据你的描述,似乎一切正常。