UnimplementedError: Graph execution error - Node: 'categorical_crossentropy/Cast' Cast string to float is not supportes

Viewed 30

I have this code for sentiment analysis using Bert which works just fine when I classify my data in 2 categories - but its giving me this error when I try it for 3 categories even though I have tried to update my code for multiclass classification. It gives me this error which I cant seem to resolve. Can anyone please help me resolve this issue?

 df_balanced['Yes']=df_balanced['labels'].apply(lambda x: 1 if x=='medium' else (2 if x=='high' else 0))
 df_balanced.sample(5)
 from sklearn.model_selection import train_test_split
    
 X_train, X_test, y_train, y_test = train_test_split(df_balanced['tweets'],df_balanced['labels'], stratify=df_balanced['labels'])
 bert_preprocess = hub.KerasLayer("https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3")
 bert_encoder = hub.KerasLayer("https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/4")
    
 def get_sentence_embeding(sentences):
     preprocessed_text = bert_preprocess(sentences)
     return bert_encoder(preprocessed_text)['pooled_output']
    
 get_sentence_embeding([
     "500$ discount. hurry up", 
     "Bhavin, are you up for a volleybal game tomorrow?"]
 )

 # Bert layers
 text_input = tf.keras.layers.Input(shape=(), dtype=tf.string, name='text')
 preprocessed_text = bert_preprocess(text_input)
 outputs = bert_encoder(preprocessed_text)
    
 # Neural network layers
 l = tf.keras.layers.Dropout(0.1, name="dropout")(outputs['pooled_output'])
 l = tf.keras.layers.Dense(1, activation='softmax', name="output")(l)
    
 # Use inputs and outputs to construct a final model
 model = tf.keras.Model(inputs=[text_input], outputs = [l])][1]
    
 model.summary()
 METRICS = [
          tf.keras.metrics.BinaryAccuracy(name='accuracy'),
          tf.keras.metrics.Precision(name='precision'),
          tf.keras.metrics.Recall(name='recall')
 ]
    
 model.compile(optimizer='adam',
               loss='categorical_crossentropy',
               metrics=METRICS)
    
 model.fit(X_train, y_train)

Error fitting the model:

UnimplementedError                        Traceback (most recent call last)
Input In [58], in <cell line: 1>()
----> 1 model.fit(X_train, y_train)

File ~\anaconda3\lib\site-packages\keras\utils\traceback_utils.py:67, in filter_traceback.<locals>.error_handler(*args, **kwargs)
     65 except Exception as e:  # pylint: disable=broad-except
     66   filtered_tb = _process_traceback_frames(e.__traceback__)
---> 67   raise e.with_traceback(filtered_tb) from None
     68 finally:
     69   del filtered_tb

File ~\anaconda3\lib\site-packages\tensorflow\python\eager\execute.py:54, in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     52 try:
     53   ctx.ensure_initialized()
---> 54   tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
     55                                       inputs, attrs, num_outputs)
     56 except core._NotOkStatusException as e:
     57   if name is not None:

UnimplementedError: Graph execution error:

Detected at node 'categorical_crossentropy/Cast' defined at (most recent call last):
    File "C:\Users\admin\anaconda3\lib\runpy.py", line 197, in _run_module_as_main
      return _run_code(code, main_globals, None,
    File "C:\Users\admin\anaconda3\lib\runpy.py", line 87, in _run_code
      exec(code, run_globals)
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel_launcher.py", line 16, in <module>
      app.launch_new_instance()
    File "C:\Users\admin\anaconda3\lib\site-packages\traitlets\config\application.py", line 846, in launch_instance
      app.start()
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 677, in start
      self.io_loop.start()
    File "C:\Users\admin\anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 199, in start
      self.asyncio_loop.run_forever()
    File "C:\Users\admin\anaconda3\lib\asyncio\base_events.py", line 601, in run_forever
      self._run_once()
    File "C:\Users\admin\anaconda3\lib\asyncio\base_events.py", line 1905, in _run_once
      handle._run()
    File "C:\Users\admin\anaconda3\lib\asyncio\events.py", line 80, in _run
      self._context.run(self._callback, *self._args)
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 471, in dispatch_queue
      await self.process_one()
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 460, in process_one
      await dispatch(*args)
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 367, in dispatch_shell
      await result
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 662, in execute_request
      reply_content = await reply_content
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 360, in do_execute
      res = shell.run_cell(code, store_history=store_history, silent=silent)
    File "C:\Users\admin\anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 532, in run_cell
      return super().run_cell(*args, **kwargs)
    File "C:\Users\admin\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 
Node: 'categorical_crossentropy/Cast'
Cast string to float is not supported
     [[{{node categorical_crossentropy/Cast}}]] [Op:__inference_train_function_83411]

enter image description here

0 Answers
Related