首页 文章

如何在keras中将cifar10输入inceptionv3

提问于
浏览
2

我正在尝试使用预先训练的Imagenet权重对CIFAR10图像进行分类,以用于Inception v3 . 我使用以下代码 .

from keras.applications.inception_v3 import InceptionV3

(xtrain, ytrain), (xtest, ytest) = cifar10.load_data()

input_cifar = Input(shape=(32, 32, 3))

base_model = InceptionV3(weights='imagenet', 
                         include_top=False, 
                         input_tensor=input_cifar)

但它给了我一个像中间转换层的'负面维度'这样的错误 .

当我使用VGG16网络时,这不会发生 .

我正在使用keras与tensorflow后端和tf昏暗的ordernig .

2 回答

  • 1

    在该层的documentation中,可以发现输入的最小形状是 (150, 150, 3) (具有 tf 暗淡排序) . 你的输入要小得多 . 这个最小的大小来自多个 poolingvalid 边界模式,这使得每个层的输出更小 - 如果它小于一定的大小 - 则既不能执行池化也不能执行卷积 .

  • 1

    初始网络在224x224大小的图像上进行训练,其下采样路径下降到10x10以下 . 因此,对于32,32,3个图像,下采样导致负尺寸大小 . 现在你可以做多件事了 . 首先,您可以将cifar10数据集中的每个图像调整为224x224,并将此张量传递到初始模型中 . 您可以删除网络的一些下采样过滤器 . 然后它仍然有效 . 第三,你可以做零填充来增加图像大小而不改变分辨率 .

相关问题