2017-03-01 51 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)是可能的最小尺寸。 –