前提・実現したいこと
右も左もわからないような初心者です。
Pythonを用いて独自の画像で異常検知を行えるようになりたいと思い他の方が公開しているコードを組み合わせたりしたのですが最後の部分でエラー表示。
正直数値等がおかしいのではと思っていたりしているのですがエラーの原因がわからずどう対処すればよいのかと行き詰ってしまいました。
エラーの原因とどのような改善を加えればよいのかご教授いただけたら幸いです。
発生している問題・エラーメッセージ
InvalidArgumentError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\tensorflow_core\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1609 try: -> 1610 c_op = c_api.TF_FinishOperation(op_desc) 1611 except errors.InvalidArgumentError as e: InvalidArgumentError: Dimensions must be equal, but are 128 and 3 for 'loss/activation_5_loss/softmax_cross_entropy_with_logits' (op: 'SoftmaxCrossEntropyWithLogits') with input shapes: [1,128], [16384,3]. During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) <ipython-input-19-07c452cd3afd> in <module> 3 batch_size=1, 4 shuffle=True, ----> 5 validation_data=(x_test, x_test), 6 ) ValueError: Dimensions must be equal, but are 128 and 3 for 'loss/activation_5_loss/softmax_cross_entropy_with_logits' (op: 'SoftmaxCrossEntropyWithLogits') with input shapes: [1,128], [16384,3].
該当のソースコード
model = Sequential() model.add(Conv2D(32, (3, 3), padding='same',input_shape=(128,128,3))) model.add(Activation('relu')) model.add(Conv2D(32, (3, 3))) model.add(Activation('relu')) model.add(MaxPool2D(pool_size=(4,4))) model.add(Conv2D(64, (3, 3), padding='same')) model.add(Activation('relu')) model.add(Conv2D(64, (3, 3))) model.add(Activation('relu')) model.add(MaxPool2D(pool_size=(4,4))) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(128)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy',optimizer='SGD',metrics=['accuracy']) model.fit(x_train, x_train, epochs=20, batch_size=1, shuffle=True, validation_data=(x_test, x_test), )
試したこと
数値の変更や画像の変更をしましたが解決には至りませんでした。
補足情報(FW/ツールのバージョンなど)
画像がうまく読み込まれていない可能性も否定できないので一応書いておきます。
また入力画像ですが128×128で32bitになります。