首页 > 解决方案 > 尝试 Keras SimpleRNN 时出现 NotImplementedError

问题描述

我正在尝试使用下面的代码在我的 Jupyter Labs Notebook 中使用 Keras SimpleRNN 实现一个非常基本的 RNN 模型。

为什么我收到错误消息?应该做什么?我的 Python 版本是 3.8.11,Keras 是 2.4.3。我尝试使用 Numpy 1.20.1 和 1.18.5。

我也通过 Tensorflow 尝试过 Keras。

from keras import models
from keras.layers import SimpleRNN

model = models.Sequential()
model.add(SimpleRNN(units=32, input_shape=(1,4), activation="relu"))
model.add(Dense(1))
model.summary()

错误:


NotImplementedError                       Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_3896/2618924464.py in <module>
      3 
      4 model = models.Sequential()
----> 5 model.add(SimpleRNN(units=32, input_shape=(1,4)))
      6 model.add(Dense(1))
      7 model.summary()

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\training\tracking\base.py in _method_wrapper(self, *args, **kwargs)
    455     self._self_setattr_tracking = False  # pylint: disable=protected-access
    456     try:
--> 457       result = method(self, *args, **kwargs)
    458     finally:
    459       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\sequential.py in add(self, layer)
    204           # and create the node connecting the current layer
    205           # to the input layer we just created.
--> 206           layer(x)
    207           set_inputs = True
    208 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in __call__(self, inputs, initial_state, constants, **kwargs)
    661 
    662     if initial_state is None and constants is None:
--> 663       return super(RNN, self).__call__(inputs, **kwargs)
    664 
    665     # If any of `initial_state` or `constants` are specified and are Keras

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, *args, **kwargs)
    923     # >> model = tf.keras.Model(inputs, outputs)
    924     if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
--> 925       return self._functional_construction_call(inputs, args, kwargs,
    926                                                 input_list)
    927 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
   1115           try:
   1116             with ops.enable_auto_cast_variables(self._compute_dtype_object):
-> 1117               outputs = call_fn(cast_inputs, *args, **kwargs)
   1118 
   1119           except errors.OperatorNotAllowedInGraphError as e:

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in call(self, inputs, mask, training, initial_state)
   1570   def call(self, inputs, mask=None, training=None, initial_state=None):
   1571     self._maybe_reset_cell_dropout_mask(self.cell)
-> 1572     return super(SimpleRNN, self).call(
   1573         inputs, mask=mask, training=training, initial_state=initial_state)
   1574 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in call(self, inputs, mask, training, initial_state, constants)
    732     self._validate_args_if_ragged(is_ragged_input, mask)
    733 
--> 734     inputs, initial_state, constants = self._process_inputs(
    735         inputs, initial_state, constants)
    736 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in _process_inputs(self, inputs, initial_state, constants)
    860         initial_state = self.states
    861     elif initial_state is None:
--> 862       initial_state = self.get_initial_state(inputs)
    863 
    864     if len(initial_state) != len(self.states):

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in get_initial_state(self, inputs)
    643     dtype = inputs.dtype
    644     if get_initial_state_fn:
--> 645       init_state = get_initial_state_fn(
    646           inputs=None, batch_size=batch_size, dtype=dtype)
    647     else:

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in get_initial_state(self, inputs, batch_size, dtype)
   1383 
   1384   def get_initial_state(self, inputs=None, batch_size=None, dtype=None):
-> 1385     return _generate_zero_filled_state_for_cell(self, inputs, batch_size, dtype)
   1386 
   1387   def get_config(self):

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in _generate_zero_filled_state_for_cell(cell, inputs, batch_size, dtype)
   2966     batch_size = array_ops.shape(inputs)[0]
   2967     dtype = inputs.dtype
-> 2968   return _generate_zero_filled_state(batch_size, cell.state_size, dtype)
   2969 
   2970 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in _generate_zero_filled_state(batch_size_tensor, state_size, dtype)
   2984     return nest.map_structure(create_zeros, state_size)
   2985   else:
-> 2986     return create_zeros(state_size)
   2987 
   2988 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\recurrent.py in create_zeros(unnested_state_size)
   2979     flat_dims = tensor_shape.as_shape(unnested_state_size).as_list()
   2980     init_state_size = [batch_size_tensor] + flat_dims
-> 2981     return array_ops.zeros(init_state_size, dtype=dtype)
   2982 
   2983   if nest.is_sequence(state_size):

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\util\dispatch.py in wrapper(*args, **kwargs)
    199     """Call target, and fall back on dispatchers if there is a TypeError."""
    200     try:
--> 201       return target(*args, **kwargs)
    202     except (TypeError, ValueError):
    203       # Note: convert_to_eager_tensor currently raises a ValueError, not a

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\array_ops.py in wrapped(*args, **kwargs)
   2745 
   2746   def wrapped(*args, **kwargs):
-> 2747     tensor = fun(*args, **kwargs)
   2748     tensor._is_zeros_tensor = True
   2749     return tensor

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\array_ops.py in zeros(shape, dtype, name)
   2792           # Create a constant if it won't be very big. Otherwise create a fill
   2793           # op to prevent serialized GraphDefs from becoming too large.
-> 2794           output = _constant_if_small(zero, shape, dtype, name)
   2795           if output is not None:
   2796             return output

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\array_ops.py in _constant_if_small(value, shape, dtype, name)
   2730 def _constant_if_small(value, shape, dtype, name):
   2731   try:
-> 2732     if np.prod(shape) < 1000:
   2733       return constant(value, shape=shape, dtype=dtype, name=name)
   2734   except TypeError:

<__array_function__ internals> in prod(*args, **kwargs)

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in prod(a, axis, dtype, out, keepdims, initial, where)
   3028     10
   3029     """
-> 3030     return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,
   3031                           keepdims=keepdims, initial=initial, where=where)
   3032 

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs)
     85                 return reduction(axis=axis, out=out, **passkwargs)
     86 
---> 87     return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
     88 
     89 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in __array__(self)
    843 
    844   def __array__(self):
--> 845     raise NotImplementedError(
    846         "Cannot convert a symbolic Tensor ({}) to a numpy array."
    847         " This error may indicate that you're trying to pass a Tensor to"

NotImplementedError: Cannot convert a symbolic Tensor (simple_rnn/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported

标签: pythonnumpykerasjupyter-notebookrecurrent-neural-network

解决方案


推荐阅读