————————————————————————— InvalidArgumentError Traceback (most recent call last) Cell In[180], line 26 23 model.summary() 25 # モデルのトレーニング —> 26 history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test)) 28 # テストデータでの予測 29 y_pred = model.predict(X_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: … TypeError: ‘SparseTensor’ object is not subscriptable

このエラーは、入力データがSparseTensorオブジェクトであるために発生しています。Kerasのmodel.fit()メソッドは密なテンソルを期待していますが、SparseTensorを渡しています。

解決するためには、SparseTensorを密なテンソルに変換する必要があります。具体的には、SparseTensorオブジェクトを密なNumPy配列に変換することができます。これを行うには、toarray()メソッドを使用します。

以下は修正後のコードです。

python
# モデルのトレーニング history = model.fit(X_train.toarray(), y_train, epochs=10, batch_size=32, validation_data=(X_test.toarray(), y_test))

X_trainX_testtoarray()メソッドを使って密なNumPy配列に変換してから、model.fit()メソッドに渡します。これにより、SparseTensorオブジェクトが正しく処理され、エラーが解決されるはずです。

未分類

Posted by ぼっち