使用预训练Keras模型进行迁移学习时出现`Check failed: cudnnSetTensorNdDescriptor`错误

我尝试将keras.applications中的一个ImageNet预训练架构迁移到CIFAR-10数据集上,但是我遇到了一个CUDA错误(当我尝试拟合我的模型时,这个错误导致我的Jupyter笔记本内核立即崩溃)。这是什么问题呢?

输出:

2019-01-10 00:39:40.165264: I tensorflow/core/platform/cpu_feature_guard.cc:141] 您的CPU支持一些本TensorFlow二进制文件未编译使用的指令:AVX2 FMA2019-01-10 00:39:40.495421: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] 发现设备0,其属性如下:名称:GeForce GTX TITAN X 主版本:5 次版本:2 内存时钟速率(GHz):1.2405 PCI总线ID:0000:01:00.0 总内存:11.93GiB 可用内存:11.63GiB2019-01-10 00:39:40.495476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] 添加可见GPU设备:02019-01-10 00:39:40.819773: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 设备互连StreamExecutor,强度1的边缘矩阵:2019-01-10 00:39:40.819812: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      02019-01-10 00:39:40.819819: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N2019-01-10 00:39:40.820066: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 创建TensorFlow设备(/device:GPU:0,内存11256 MB) -> 物理GPU(设备:0,名称:GeForce GTX TITAN X,PCI总线ID:0000:01:00.0,计算能力:5.2)2019-01-10 00:39:40.844280: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] 添加可见GPU设备:02019-01-10 00:39:40.844307: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 设备互连StreamExecutor,强度1的边缘矩阵:2019-01-10 00:39:40.844313: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      02019-01-10 00:39:40.844317: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N2019-01-10 00:39:40.844520: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 创建TensorFlow设备(/job:localhost/replica:0/task:0/device:GPU:0,内存11256 MB) -> 物理GPU(设备:0,名称:GeForce GTX TITAN X,PCI总线ID:0000:01:00.0,计算能力:5.2)[I 00:40:58.262 NotebookApp] 正在保存文件于 /Untitled.ipynb2019-01-10 00:42:56.543392: F tensorflow/stream_executor/cuda/cuda_dnn.cc:542] 检查失败:cudnnSetTensorNdDescriptor(handle_.get(), elem_type, nd, dims.data(), strides.data()) == CUDNN_STATUS_SUCCESS (3 vs. 0)batch_descriptor: {count: 32 feature_map_count: 320 spatial: 0 0  value_min: 0.000000 value_max: 0.000000 layout: BatchDepthYX}

代码:

from keras.applications.inception_resnet_v2 import InceptionResNetV2from keras.preprocessing import imagefrom keras.layers import Dense, GlobalAveragePooling2Dfrom keras.models import Modelimport keras.utilsimport numpy as npfrom keras.datasets import cifar10(X_train, y_train), (X_test, y_test) = cifar10.load_data()y_train = keras.utils.to_categorical(y_train, 10)y_test = keras.utils.to_categorical(y_test, 10)# 定义模型base_model = InceptionResNetV2(weights='imagenet', include_top=False)x = base_model.outputprint(x.shape)x = GlobalAveragePooling2D()(x)x = Dense(1024,activation='relu')(x)preds = Dense(10,activation='softmax')(x)model = Model(inputs=base_model.input, outputs=preds)# 只微调最后一层for layer in base_model.layers:    layer.trainable = Falsemodel.compile(optimizer='rmsprop', loss='categorical_crossentropy')

回答:

检查InceptionResnetV2网络的输入要求:

它应该有3个输入通道,且宽度和高度不得小于75

而您尝试拟合的CIFAR10图像尺寸为32×32。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注