kerasで画像処理した時の InvalidArgumentErrorを対処した

2020/10/23に公開

jupyter labを使ってkerasで画像の2項分類をしていて、画像の前処理を行ったらエラーが発生してハマったのでメモします。

なお、画像の前処理を行う前は、このエラーは生じていませんでした。

エラーの内容はこちら。

InvalidArgumentError:  logits and labels must be broadcastable: logits_size=[32,2] labels_size=[32,3]
	 [[node categorical_crossentropy/softmax_cross_entropy_with_logits (defined at <ipython-input-19-ee3ddb2cbf58>:6) ]] [Op:__inference_train_function_2293]

Function call stack:
train_function

Google翻訳で訳すと、「logitsとlabelはブロードキャスト可能である必要があります~」となります。

調べると、質問掲示板に、logits(ニューラルネットワークから出力される予測値)のサイズと、ラベルのサイズが合ってません、ということのようです。

logit の [32,2]と、ラベルの[32,3]、2つ目の数字、2と3の違いはどこからきているのかわからず、しばらくハマってしまいました。

分かれば何のことはなく、画像の前処理をjupyter lab上のコードで行ったため、Notebookの状態等を保存するために自動で作成される.pynb_checkpointsが作成されたため、フォルダが1つ増えていたことが原因でした。

Windows上のエクスプローラーでのフォルダの見え方

.ipynb.check_points とは? 参考 teratail Python3 「.ipynb_checkpoints」の削除方法について

わかれば簡単なことですが、jupyter labからは、この.ipynb.check_pointsが見えないのです。

jupyter lab上のフォルダの見え方

.ipynb_checkpoints を消せばエラーは解消されました。

以上になります、最後までお読みいただきありがとうございました。

Discussion