Epoch 1/5 2024-04-10 15:11:27.891429: W tensorflow/core/framework/op_kernel.cc:1828] OP_REQUIRES failed at sparse_xent_op.cc:103 : INVALID_ARGUMENT: Received a label value of 160 which is outside the valid range of [0, 6). Label values: 60 60 140 80 60 120 60 120 60 120 60 160 120 60 120 120 100 60 100 140 60 60 160 100 60 60 140 100 60 120 100 60 ————————————————————————— InvalidArgumentError Traceback (most recent call last) Cell In[214], line 30 27 model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’]) 29 # モデルのトレーニング —> 30 history = model.fit(X_train_scaled, y_train, epochs=5, batch_size=32, validation_data=(X_test_scaled, y_test)) 32 # テストデータでの予測と評価 33 loss, accuracy = model.evaluate(X_test_scaled, 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: 60 60 140 80 60 120 60 120 60 120 60 160 120 60 120 120 100 60 100 140 60 60 160 100 60 60 140 100 60 120 100 60 [[{{node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits}}]] [Op:__inference_train_function_161012] Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings…
このエラーは、ラベルの値がクラスの範囲外であることを示しています。sparse_categorical_crossentropy損失関数が期待するラベルの範囲は、0からクラス数までの間です。しかし、エラーメッセージからわかるように、ラベルの値がその範囲外に存在しています。
これは、データセットに存在するラベルの値が、予想されるクラス数よりも大きいことを意味します。この問題を解決するためには、データセットのラベル値を確認し、クラス数を適切に設定する必要があります。
提供されたコードでは、num_classes変数の定義方法が適切でない可能性があります。len(np.unique(y_train))は、訓練セットのラベルから一意のクラス数を取得します。しかし、この方法は、テストセットに存在する可能性があるすべてのクラスを考慮していないかもしれません。
この問題を解決するためには、データセット全体のラベルの一意な値を取得し、それを使用してクラス数を設定する必要があります。次のコードを試してみてください:
python
# データセット全体のラベルの一意な値を取得し、クラス数を設定する all_labels = np.unique(np.concatenate((y_train, y_test), axis=None)) num_classes = len(all_labels)
これにより、訓練セットとテストセットの両方のラベルを考慮して、適切なクラス数が設定されます。そして、このクラス数を使用してモデルを再構築してください。

ディスカッション
コメント一覧
まだ、コメントがありません