web-dev-qa-db-ja.com

モデル入力のチェック時のエラー:convolution2d_input_1は4次元であると期待されていましたが、形状(32、32、3)の配列を取得しました

次のレイヤーで始まる深いネットワークをトレーニングしたいと思います。

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)))

51
user1934212

入力データ配列に次の変換を適用するだけです。

input_data = input_data.reshape((-1, image_side1, image_side2, channels))
0
codeslord

実際にデータを順序付ける方法に依存します。最初にチャネルを基準にする場合、データを再形成する必要があります:x_train = x_train.reshape(x_train.shape [0]、channel、width、height)

そのチャネルが最後の場合:x_train = s_train.reshape(x_train.shape [0]、width、height、channel)

0
kenshi123