71

次のレイヤーから始まる深いネットワークをトレーニングしたいと考えています。

model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))

使用して

history = model.fit_generator(get_training_data(),
                samples_per_epoch=1, nb_epoch=1,nb_val_samples=5,
                verbose=1,validation_data=get_validation_data()

次のジェネレーターを使用します。

def get_training_data(self):
     while 1:
        for i in range(1,5):
            image = self.X_train[i]
            label = self.Y_train[i]
            yield (image,label)

(検証ジェネレーターは似ています)。

トレーニング中に、次のエラーが表示されます。

Error when checking model input: expected convolution2d_input_1 to have 4 
dimensions, but got array with shape (32, 32, 3)

最初のレイヤーで、それはどのようにできますか

 model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))

?

4

9 に答える 9

0

はい、4 つの引数のタプルを受け入れます。トレーニング画像の数 (またはその他) = 6000、画像サイズ = 28x28、およびパラメーターが (6000,28,28,1) のグレースケール画像の場合

最後の引数は、グレースケールの場合は 1、カラー イメージの場合は 3 です。

于 2020-05-20T17:58:29.330 に答える
0

同じ問題が発生しましたが、答えはどれもうまくいきませんでした。多くのデバッグを行った後、1 つの画像のサイズが よりも小さいことがわかりました32。これにより、配列が正しくない次元で壊れ、上記のエラーが発生します。

この問題を解決するには、すべての画像の寸法が正しいことを確認してください。

于 2020-06-29T17:05:03.263 に答える