如何将cifar10输入到keras的inceptionv3中
问题描述:
我想使用Inception v3的预先训练的imagenet权重对CIFAR10图像进行分类。我正在使用下面的代码。如何将cifar10输入到keras的inceptionv3中
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)
但它给了我一个错误,如中间conv层的'Negative dimension'。
当我使用VGG16网络时,不会发生这种情况。
我使用的是张量流后端和tf dim ordernig的keras。
答
在此图层的documentation中,可能会发现输入的最小形状为(150, 150, 3)
(tf
dim订购)。你的输入要小得多。这个最小尺寸来自多个pooling
和valid
边界模式,这使得每个层的输出变小 - 如果它小于一定的尺寸 - 不可能既不执行汇聚也不执行卷积。
答
初始网络在224x224大小的图像上进行训练,其下采样路径降至10x10以下。因此,对于32,32,3个图像,缩减采样会导致负的尺寸大小。现在你可以做很多事情。首先,您可以将cifar10数据集中的每个图像调整为224x224,并将该张量传递到初始模型。您可以删除网络的一些下采样过滤器。那么它仍然会工作。第三你可以做零填充增加图像的大小而不改变分辨率。
+0
其实 - (150,150,3)是可能的最小尺寸。 –
如果你不介意 - 我会欣赏一个upvote :) –