2017-03-01 141 views
2

我想使用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。

回答

1

在此图层的documentation中,可能会发现输入的最小形状为(150, 150, 3)tf dim订购)。你的输入要小得多。这个最小尺寸来自多个poolingvalid边界模式,这使得每个层的输出变小 - 如果它小于一定的尺寸 - 不可能既不执行汇聚也不执行卷积。

+0

如果你不介意 - 我会欣赏一个upvote :) –

1

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

+0

其实 - (150,150,3)是可能的最小尺寸。 –