私はモデルを訓練するためにMNISTデータセットを使用して手書き数字を分類しようとしています。私のモデルは練習に成功し、98.9%の精度を達成しました。私は、カスタムイメージを試してみて、入力するときしかし、それは私に次のエラーが表示されます。ニューラルネットワーク層の入力形状が正しくない
Error when checking : expected conv2d_4_input to have shape (None, 28, 28, 1) but got array with shape (1, 1, 28, 28)
これはすなわち、入力層最初の畳み込み層です。 この問題を解決するにはどうすればよいですか? これは私の畳み込みニューラルネットワークである:
conv_model = Sequential()
conv_model.add(Conv2D(filters, kernel_size[0], input_shape=(28 , 28 , 1)))
conv_model.add(Activation(act))
conv_model.add(Conv2D(filters, kernel_size[0]))
conv_model.add(Activation(act))
conv_model.add(MaxPool2D(pool_size=(2,2)))
conv_model.add(Dropout(0.25))
conv_model.add(Flatten())
conv_model.add(Dense(128))
conv_model.add(Activation(act))
conv_model.add(Dropout(0.5))
conv_model.add(Dense(10))
conv_model.add(Activation('softmax'))
#conv_model.summary()
コンパイルの詳細:
conv_model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
完全なソースコード: https://github.com/tanmay-edgelord/HandwrittenDigitRecognition
画像:任意のさらなる詳細が必要な場合は コメントしてください。
でリシェイプ関数に渡すことで解決しましたこの場合は数字になります)。また、サイズ1、28、28、1をcv2.resizeに入力しようとしましたが、2つの引数しか期待できないというエラーが出ました。 –
バックエンドでテンソルフローを使用しています –
通常はcv2を使用し、後で結果を変更してください。準備ができたら 'model.predict'を使う直前に' roi'を作り直してください。 'roi'がnumpy配列なら、' roi = roi.reshape((1,28,28,1)) 'と同じくらい簡単です。もしそうでなければ、それはnumpyの配列にする: 'roi = np.array(roi)'。 –