【问题标题】:UnimplementedError in Tensorflow deep learningTensorflow 深度学习中的 UnimplementedError
【发布时间】:2022-01-02 07:36:46
【问题描述】:

我正在尝试创建一个神经网络,它可以获取姓名的首字母和最后一个字母,以确定人是否为男性。但不幸的是,我得到了一个错误。请帮忙。

import pandas as pd
from sklearn.model_selection import train_test_split
nsl = ['r','a','v','r','p','a','t','r','m','g']
nel = ['j','k','k','m','l','i','a','a','u','i']
isMale = [1,1,1,1,1,0,0,0,0,0]
df = pd.DataFrame(list(zip(nsl, nel, isMale)), columns =('nsl', 'nel', 'isMale'))
df

X = df.drop(['isMale'], axis=1)
y = df['isMale']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2)
y_train.head()

from tensorflow.keras.models import Sequential, load_model
from tensorflow.keras.layers import Dense
from sklearn.metrics import accuracy_score

model = Sequential()
model.add(Dense(units=32, activation='relu', input_dim=len(X_train.columns)))
model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='sgd')

model.fit(X_train, y_train, epochs=50)

我使用的是 Google Colab,在最后一行 (model.fit) 中出现以下错误

---------------------------------------------------------------------------
UnimplementedError                        Traceback (most recent call last)
<ipython-input-21-261e644ab303> in <module>()
----> 1 model.fit(X_train, y_train, epochs=50)

1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57     ctx.ensure_initialized()
     58     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 59                                         inputs, attrs, num_outputs)
     60   except core._NotOkStatusException as e:
     61     if name is not None:

UnimplementedError:  Cast string to float is not supported
     [[node sequential/Cast
 (defined at /usr/local/lib/python3.7/dist-packages/keras/engine/functional.py:671)
]] [Op:__inference_train_function_1159]

Errors may have originated from an input operation.
Input Source operations connected to node sequential/Cast:
In[0] IteratorGetNext (defined at /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:866)

Operation defined at: (most recent call last)
>>>   File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
>>>     "__main__", mod_spec)
>>> 
>>>   File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
>>>     exec(code, run_globals)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py", line 16, in <module>
>>>     app.launch_new_instance()
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py", line 846, in launch_instance
>>>     app.start()
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelapp.py", line 499, in start
>>>     self.io_loop.start()
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py", line 132, in start
>>>     self.asyncio_loop.run_forever()
>>> 
>>>   File "/usr/lib/python3.7/asyncio/base_events.py", line 541, in run_forever
>>>     self._run_once()
>>> 
>>>   File "/usr/lib/python3.7/asyncio/base_events.py", line 1786, in _run_once
>>>     handle._run()
>>> 
>>>   File "/usr/lib/python3.7/asyncio/events.py", line 88, in _run
>>>     self._context.run(self._callback, *self._args)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py", line 122, in _handle_events
>>>     handler_func(fileobj, events)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
>>>     return fn(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 452, in _handle_events
>>>     self._handle_recv()
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 481, in _handle_recv
>>>     self._run_callback(callback, msg)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 431, in _run_callback
>>>     callback(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
>>>     return fn(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
>>>     return self.dispatch_shell(stream, msg)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
>>>     handler(stream, idents, msg)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
>>>     user_expressions, allow_stdin)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
>>>     res = shell.run_cell(code, store_history=store_history, silent=silent)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
>>>     return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
>>>     interactivity=interactivity, compiler=compiler, result=result)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2828, in run_ast_nodes
>>>     if self.run_code(code, result):
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
>>>     exec(code_obj, self.user_global_ns, self.user_ns)
>>> 
>>>   File "<ipython-input-21-261e644ab303>", line 1, in <module>
>>>     model.fit(X_train, y_train, epochs=50)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler
>>>     return fn(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1216, in fit
>>>     tmp_logs = self.train_function(iterator)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 878, in train_function
>>>     return step_function(self, iterator)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 867, in step_function
>>>     outputs = model.distribute_strategy.run(run_step, args=(data,))
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 860, in run_step
>>>     outputs = model.train_step(data)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 808, in train_step
>>>     y_pred = self(x, training=True)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 64, in error_handler
>>>     return fn(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py", line 1083, in __call__
>>>     outputs = call_fn(inputs, *args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 92, in error_handler
>>>     return fn(*args, **kwargs)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/sequential.py", line 373, in call
>>>     return super(Sequential, self).call(inputs, training=training, mask=mask)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/functional.py", line 452, in call
>>>     inputs, training=training, mask=mask)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/functional.py", line 571, in _run_internal_graph
>>>     y = self._conform_to_reference_input(y, ref_input=x)
>>> 
>>>   File "/usr/local/lib/python3.7/dist-packages/keras/engine/functional.py", line 671, in _conform_to_reference_input
>>>     tensor = tf.cast(tensor, dtype=ref_input.dtype)
>>>

各位,请帮我解决这个错误。

【问题讨论】:

    标签: python deep-learning tensorflow2.0


    【解决方案1】:

    我能够重现该问题。机器学习算法通常需要将数据转换为数字形式,才能使用数据进行预测。这里我使用了标签编码。请在下面找到工作代码:

    import pandas as pd
    from sklearn.model_selection import train_test_split
    nsl = ['r','a','v','r','p','a','t','r','m','g']
    nel = ['j','k','k','m','l','i','a','a','u','i']
    isMale = [1,1,1,1,1,0,0,0,0,0]
    df = pd.DataFrame(list(zip(nsl, nel, isMale)), columns =('nsl', 'nel', 'isMale'))
    df.info()
    
    X = df.drop(['isMale'], axis=1)
    y = df['isMale']
    
    #Label encoding
    X['nsl']=X['nsl'].astype('category')
    X['nel']=X['nel'].astype('category')
    X['nsl_cat'] = X['nsl'].cat.codes
    X['nel_cat'] = X['nel'].cat.codes
    
    X.drop(['nsl','nel'], axis=1,inplace=True)
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2)
    
    from tensorflow.keras.models import Sequential, load_model
    from tensorflow.keras.layers import Dense
    from sklearn.metrics import accuracy_score
    
    model = Sequential()
    model.add(Dense(units=32, activation='relu', input_dim=len(X_train.columns)))
    model.add(Dense(units=64, activation='relu'))
    model.add(Dense(units=1, activation='sigmoid'))
    
    model.compile(loss='binary_crossentropy', optimizer='sgd')
    model.fit(X_train, y_train, epochs=10)
    
    
    The output is as follows:
    Epoch 1/10
    1/1 [==============================] - 1s 875ms/step - loss: 0.7411
    Epoch 2/10
    1/1 [==============================] - 0s 20ms/step - loss: 0.7192
    Epoch 3/10
    1/1 [==============================] - 0s 19ms/step - loss: 0.7030
    Epoch 4/10
    1/1 [==============================] - 0s 14ms/step - loss: 0.6903
    Epoch 5/10
    1/1 [==============================] - 0s 15ms/step - loss: 0.6803
    Epoch 6/10
    1/1 [==============================] - 0s 13ms/step - loss: 0.6726
    Epoch 7/10
    1/1 [==============================] - 0s 13ms/step - loss: 0.6664
    Epoch 8/10
    1/1 [==============================] - 0s 22ms/step - loss: 0.6612
    Epoch 9/10
    1/1 [==============================] - 0s 23ms/step - loss: 0.6568
    Epoch 10/10
    1/1 [==============================] - 0s 30ms/step - loss: 0.6530
    <keras.callbacks.History at 0x7f22f6ec80d0>
    

    如果问题仍然存在,请告诉我们。谢谢!

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      相关资源
      最近更新 更多