————————————————————————— InvalidArgumentError Traceback (most recent call last) Cell In[232], line 42 39 model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’]) 41 # モデルのトレーニング —> 42 model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test)) 44 # モデルの評価 45 loss, accuracy = model.evaluate(X_test, y_test) File /home/share/temp/venv/lib/python3.8/site-packages/keras/src/utils/traceback_utils.py:70, in filter_traceback.<locals>.error_handler(*args, **kwargs) 67 filtered_tb = _process_traceback_frames(e.__traceback__) 68 # To get the full stack trace, call: 69 # `tf.debugging.disable_traceback_filtering()` —> 70 raise e.with_traceback(filtered_tb) from None 71 finally: 72 del filtered_tb File /home/share/temp/venv/lib/python3.8/site-packages/tensorflow/python/eager/execute.py:53, in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 51 try: 52 ctx.ensure_initialized() —> 53 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, 54 inputs, attrs, num_outputs) 55 except core._NotOkStatusException as e: 56 if name is not None: … File “/home/share/temp/venv/lib/python3.8/site-packages/keras/src/backend.py”, line 5762, in sparse_categorical_crossentropy res = tf.nn.sparse_softmax_cross_entropy_with_logits( Node: ‘sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits’ Received a label value of 160 which is outside the valid range of [0, 6). Label values: 100 60 100 100 120 80 60 60 60 120 60 120 160 120 60 60 60 100 60 100 80 100 60 60 100 160 80 100 60 60 160 60 [[{{node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits}}]] [Op:__inference_train_function_166480]

エラーメッセージによると、ラベルの値が有効な範囲外にあることが問題であることが示されています。sparse_categorical_crossentropyのエラーメッセージは、ラベルの値が [0, 6) の範囲外にあることを報告しています。

修正されたコードでは、目的変数 y を整数型に変換しましたが、データの中には範囲外の値が含まれているようです。多クラス分類の場合、ラベルの値は0から始まる連続した整数で、クラスの数以上の値を取ることはできません。

この問題を解決するためには、データセットを確認し、目的変数 y の値が適切な範囲内にあることを確認する必要があります。ラベルの値が意図したクラスにマッピングされていることを確認し、必要に応じて修正してください。特に、np.unique(y_train) を使用してユニークなラベルの数を確認し、その範囲内にラベルが収まっていることを確認してください。

未分類

Posted by ぼっち