首页 > 解决方案 > NotImplementedError:无法将符号张量 (simple_rnn_17/strided_slice:0) 转换为 numpy 数组

问题描述

执行以下代码片段时出现标题中的错误:

np.random.seed(42)
tf.random.set_seed(42)

model = keras.models.Sequential([
    # this None is not for batch_size, the None for batch_size is still added behind the scene
    # here [None, 1] means we want to make the input to be accepted with any length of step size as well
    keras.layers.SimpleRNN(1, input_shape=[None, 1]) 
])

optimizer = keras.optimizers.Adam(lr=0.005)
model.compile(loss="mse", optimizer=optimizer)
history = model.fit(X_train, y_train, epochs=20,
                    validation_data=(X_valid, y_valid))

完整的笔记本可以在这里找到:

handson-ml2/15_processing_sequences_using_rnns_and_cnns.ipynb

以下是完整的错误详细信息:

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
/tmp/ipykernel_5579/3974885493.py in <module>
      9     # this None is not for batch_size, the None for batch_size is still added behind the scene
     10     # here [None, 1] means we want to make the input to be accepted with any length of step size as well
---> 11     keras.layers.SimpleRNN(1, input_shape=[None, 1])
     12 ])
     13 

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
    515     self._self_setattr_tracking = False  # pylint: disable=protected-access
    516     try:
--> 517       result = method(self, *args, **kwargs)
    518     finally:
    519       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in __init__(self, layers, name)
    142         layers = [layers]
    143       for layer in layers:
--> 144         self.add(layer)
    145 
    146   @property

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
    515     self._self_setattr_tracking = False  # pylint: disable=protected-access
    516     try:
--> 517       result = method(self, *args, **kwargs)
    518     finally:
    519       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
    206           # and create the node connecting the current layer
    207           # to the input layer we just created.
--> 208           layer(x)
    209           set_inputs = True
    210 

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in __call__(self, inputs, initial_state, constants, **kwargs)
    658 
    659     if initial_state is None and constants is None:
--> 660       return super(RNN, self).__call__(inputs, **kwargs)
    661 
    662     # If any of `initial_state` or `constants` are specified and are Keras

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
    950     if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
    951       return self._functional_construction_call(inputs, args, kwargs,
--> 952                                                 input_list)
    953 
    954     # Maintains info about the `Layer.call` stack.

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
   1089         # Check input assumptions set after layer building, e.g. input shape.
   1090         outputs = self._keras_tensor_symbolic_call(
-> 1091             inputs, input_masks, args, kwargs)
   1092 
   1093         if outputs is None:

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs)
    820       return nest.map_structure(keras_tensor.KerasTensor, output_signature)
    821     else:
--> 822       return self._infer_output_signature(inputs, args, kwargs, input_masks)
    823 
    824   def _infer_output_signature(self, inputs, args, kwargs, input_masks):

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
    861           # TODO(kaftan): do we maybe_build here, or have we already done it?
    862           self._maybe_build(inputs)
--> 863           outputs = call_fn(inputs, *args, **kwargs)
    864 
    865         self._handle_activity_regularization(inputs, outputs)

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in call(self, inputs, mask, training, initial_state)
   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 
   1575   @property

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in call(self, inputs, mask, training, initial_state, constants)
    730 
    731     inputs, initial_state, constants = self._process_inputs(
--> 732         inputs, initial_state, constants)
    733 
    734     self._maybe_reset_cell_dropout_mask(self.cell)

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in _process_inputs(self, inputs, initial_state, constants)
    857         initial_state = self.states
    858     elif initial_state is None:
--> 859       initial_state = self.get_initial_state(inputs)
    860 
    861     if len(initial_state) != len(self.states):

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in get_initial_state(self, inputs)
    641     if get_initial_state_fn:
    642       init_state = get_initial_state_fn(
--> 643           inputs=None, batch_size=batch_size, dtype=dtype)
    644     else:
    645       init_state = _generate_zero_filled_state(batch_size, self.cell.state_size,

~/anaconda3/envs/handsonml2/lib/python3.7/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):

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state_for_cell(cell, inputs, batch_size, dtype)
   2985     batch_size = array_ops.shape(inputs)[0]
   2986     dtype = inputs.dtype
-> 2987   return _generate_zero_filled_state(batch_size, cell.state_size, dtype)
   2988 
   2989 

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state(batch_size_tensor, state_size, dtype)
   3003     return nest.map_structure(create_zeros, state_size)
   3004   else:
-> 3005     return create_zeros(state_size)
   3006 
   3007 

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py in create_zeros(unnested_state_size)
   2998     flat_dims = tensor_shape.TensorShape(unnested_state_size).as_list()
   2999     init_state_size = [batch_size_tensor] + flat_dims
-> 3000     return array_ops.zeros(init_state_size, dtype=dtype)
   3001 
   3002   if nest.is_nested(state_size):

~/anaconda3/envs/handsonml2/lib/python3.7/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

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in wrapped(*args, **kwargs)
   2817 
   2818   def wrapped(*args, **kwargs):
-> 2819     tensor = fun(*args, **kwargs)
   2820     tensor._is_zeros_tensor = True
   2821     return tensor

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in zeros(shape, dtype, name)
   2866           # Create a constant if it won't be very big. Otherwise create a fill
   2867           # op to prevent serialized GraphDefs from becoming too large.
-> 2868           output = _constant_if_small(zero, shape, dtype, name)
   2869           if output is not None:
   2870             return output

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in _constant_if_small(value, shape, dtype, name)
   2802 def _constant_if_small(value, shape, dtype, name):
   2803   try:
-> 2804     if np.prod(shape) < 1000:
   2805       return constant(value, shape=shape, dtype=dtype, name=name)
   2806   except TypeError:

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

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/numpy/core/fromnumeric.py in prod(a, axis, dtype, out, keepdims, initial, where)
   3029     """
   3030     return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,
-> 3031                           keepdims=keepdims, initial=initial, where=where)
   3032 
   3033 

~/anaconda3/envs/handsonml2/lib/python3.7/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 

~/anaconda3/envs/handsonml2/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __array__(self)
    853         "Cannot convert a symbolic Tensor ({}) to a numpy array."
    854         " This error may indicate that you're trying to pass a Tensor to"
--> 855         " a NumPy call, which is not supported".format(self.name))
    856 
    857   def __len__(self):

NotImplementedError: Cannot convert a symbolic Tensor (simple_rnn_17/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

以下是我的 anaconda 环境中当前安装的软件包列表:

# packages in environment at /home/hafiz031/anaconda3/envs/handsonml2:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
_py-xgboost-mutex         2.0                       cpu_0  
_tflow_select             2.1.0                       gpu  
absl-py                   0.13.0           py37h06a4308_0  
anyio                     3.3.0            py37h89c1867_0    conda-forge
argcomplete               1.12.3             pyhd8ed1ab_2    conda-forge
argon2-cffi               20.1.0           py37h5e8e339_2    conda-forge
astor                     0.8.1            py37h06a4308_0  
astunparse                1.6.3                      py_0  
async_generator           1.10                       py_0    conda-forge
attrs                     21.2.0             pyhd8ed1ab_0    conda-forge
babel                     2.9.1              pyh44b312d_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
blas                      1.0                         mkl  
bleach                    4.1.0              pyhd8ed1ab_0    conda-forge
blinker                   1.4              py37h06a4308_0  
brotlipy                  0.7.0           py37h5e8e339_1001    conda-forge
c-ares                    1.17.1               h27cfd23_0  
ca-certificates           2021.7.5             h06a4308_1  
cachetools                4.2.2              pyhd3eb1b0_0  
certifi                   2021.5.30        py37h06a4308_0  
cffi                      1.14.6           py37hc58025e_0    conda-forge
chardet                   4.0.0            py37h89c1867_1    conda-forge
charset-normalizer        2.0.0              pyhd8ed1ab_0    conda-forge
click                     8.0.1              pyhd3eb1b0_0  
coverage                  5.5              py37h27cfd23_2  
cryptography              3.4.7            py37h5d9358c_0    conda-forge
cudatoolkit               10.1.243             h6bb024c_0  
cudnn                     7.6.5                cuda10.1_0  
cupti                     10.1.168                      0  
cycler                    0.10.0                   py37_0  
cython                    0.29.24          py37h295c915_0  
dataclasses               0.8                pyh6d0b6a4_7  
dbus                      1.13.18              hb2f20db_0  
debugpy                   1.4.1            py37hcd2ae1e_0    conda-forge
decorator                 5.1.0              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
entrypoints               0.3             pyhd8ed1ab_1003    conda-forge
expat                     2.4.1                h2531618_2  
filelock                  3.0.12                   pypi_0    pypi
fontconfig                2.13.1               h6c09931_0  
freetype                  2.10.4               h5ab3b9f_0  
gast                      0.4.0              pyhd3eb1b0_0  
glib                      2.69.1               h5202010_0  
google-auth               1.21.3                     py_0  
google-auth-oauthlib      0.4.4              pyhd3eb1b0_0  
google-pasta              0.2.0              pyhd3eb1b0_0  
grpcio                    1.36.1           py37h2157cd5_1  
gst-plugins-base          1.14.0               h8213a91_2  
gstreamer                 1.14.0               h28cd5cc_2  
h5py                      2.10.0           py37hd6299e0_1  
hdf5                      1.10.6               hb1b8bf9_0  
icu                       58.2                 he6710b0_3  
idna                      3.1                pyhd3deb0d_0    conda-forge
importlib-metadata        4.8.1            py37h89c1867_0    conda-forge
importlib_metadata        4.8.1                hd8ed1ab_0    conda-forge
intel-openmp              2021.3.0          h06a4308_3350  
ipykernel                 6.4.1            py37h6531663_0    conda-forge
ipython                   7.27.0           py37h6531663_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
jedi                      0.18.0           py37h89c1867_2    conda-forge
jinja2                    3.0.1              pyhd8ed1ab_0    conda-forge
joblib                    1.0.1              pyhd3eb1b0_0  
jpeg                      9d                   h7f8727e_0  
json5                     0.9.5              pyh9f0ad1d_0    conda-forge
jsonschema                3.2.0              pyhd8ed1ab_3    conda-forge
jupyter_client            7.0.3              pyhd8ed1ab_0    conda-forge
jupyter_core              4.8.1            py37h89c1867_0    conda-forge
jupyter_server            1.11.0             pyhd8ed1ab_0    conda-forge
jupyterlab                3.1.13             pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
jupyterlab_server         2.8.1              pyhd8ed1ab_0    conda-forge
keras-preprocessing       1.1.2              pyhd3eb1b0_0  
kiwisolver                1.3.1            py37h2531618_0  
lcms2                     2.12                 h3be6417_0  
ld_impl_linux-64          2.35.1               h7274673_9  
libffi                    3.3                  he6710b0_2  
libgcc-ng                 9.3.0               h5101ec6_17  
libgfortran-ng            7.5.0               ha8ba4b0_17  
libgfortran4              7.5.0               ha8ba4b0_17  
libgomp                   9.3.0               h5101ec6_17  
libpng                    1.6.37               hbc83047_0  
libprotobuf               3.17.2               h4ff587b_1  
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libstdcxx-ng              9.3.0               hd4cf53a_17  
libtiff                   4.2.0                h85742a9_0  
libuuid                   1.0.3                h1bed415_2  
libwebp-base              1.2.0                h27cfd23_0  
libxcb                    1.14                 h7b6447c_0  
libxgboost                1.3.3                h2531618_0  
libxml2                   2.9.12               h03d6c58_0  
lz4-c                     1.9.3                h295c915_1  
markdown                  3.3.4            py37h06a4308_0  
markupsafe                2.0.1            py37h5e8e339_0    conda-forge
matplotlib                3.3.4            py37h06a4308_0  
matplotlib-base           3.3.4            py37h62a2d02_0  
matplotlib-inline         0.1.3              pyhd8ed1ab_0    conda-forge
mistune                   0.8.4           py37h5e8e339_1004    conda-forge
mkl                       2021.3.0           h06a4308_520  
mkl-service               2.4.0            py37h7f8727e_0  
mkl_fft                   1.3.0            py37h42c9631_2  
mkl_random                1.2.2            py37h51133e4_0  
nbclassic                 0.3.2              pyhd8ed1ab_0    conda-forge
nbclient                  0.5.4              pyhd8ed1ab_0    conda-forge
nbconvert                 6.1.0            py37h89c1867_1    conda-forge
nbformat                  5.1.3              pyhd8ed1ab_0    conda-forge
ncurses                   6.2                  he6710b0_1  
nest-asyncio              1.5.1              pyhd8ed1ab_0    conda-forge
notebook                  6.4.4              pyha770c72_0    conda-forge
numpy                     1.20.3                   pypi_0    pypi
oauthlib                  3.1.1              pyhd3eb1b0_0  
olefile                   0.46                     py37_0  
openjpeg                  2.4.0                h3ad879b_0  
openssl                   1.1.1l               h7f8727e_0  
opt_einsum                3.3.0              pyhd3eb1b0_1  
packaging                 21.0               pyhd8ed1ab_0    conda-forge
pandas                    1.2.2            py37ha9443f7_0  
pandoc                    2.14.2               h7f98852_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parso                     0.8.2              pyhd8ed1ab_0    conda-forge
pcre                      8.45                 h295c915_0  
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    8.3.1            py37h2c7a002_0  
pip                       21.0.1           py37h06a4308_0  
prometheus_client         0.11.0             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.20             pyha770c72_0    conda-forge
protobuf                  3.17.2           py37h295c915_0  
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
py-xgboost                1.3.3            py37h06a4308_0  
pyasn1                    0.4.8              pyhd3eb1b0_0  
pyasn1-modules            0.2.8                      py_0  
pycparser                 2.20               pyh9f0ad1d_2    conda-forge
pygments                  2.10.0             pyhd8ed1ab_0    conda-forge
pyjwt                     2.1.0            py37h06a4308_0  
pyopenssl                 20.0.1             pyhd8ed1ab_0    conda-forge
pyparsing                 2.4.7              pyh9f0ad1d_0    conda-forge
pyqt                      5.9.2            py37h05f1152_2  
pyrsistent                0.17.3           py37h5e8e339_2    conda-forge
pysocks                   1.7.1            py37h89c1867_3    conda-forge
python                    3.7.11               h12debd9_0  
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-flatbuffers        1.12               pyhd3eb1b0_0  
python_abi                3.7                     2_cp37m    conda-forge
pytz                      2021.1             pyhd8ed1ab_0    conda-forge
pyzmq                     19.0.2           py37hac76be4_2    conda-forge
qt                        5.9.7                h5867ecd_1  
readline                  8.1                  h27cfd23_0  
regex                     2021.8.28                pypi_0    pypi
requests                  2.26.0             pyhd8ed1ab_0    conda-forge
requests-oauthlib         1.3.0                      py_0  
requests-unixsocket       0.2.0                      py_0    conda-forge
rsa                       4.7.2              pyhd3eb1b0_1  
sacremoses                0.0.45                   pypi_0    pypi
scikit-learn              0.24.1           py37ha9443f7_0  
scipy                     1.7.1            py37h292c36d_2  
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                58.0.4           py37h06a4308_0  
sip                       4.19.8           py37hf484d3e_0  
six                       1.16.0             pyh6c4a22f_0    conda-forge
sniffio                   1.2.0            py37h89c1867_1    conda-forge
sqlite                    3.36.0               hc218d9a_0  
tensorboard               2.4.0              pyhc547734_0  
tensorboard-plugin-wit    1.6.0                      py_0  
tensorflow                2.4.1           gpu_py37ha2e99fa_0  
tensorflow-base           2.4.1           gpu_py37h29c2da4_0  
tensorflow-estimator      2.6.0              pyh7b7c402_0  
tensorflow-gpu            2.4.1                h30adc30_0  
termcolor                 1.1.0            py37h06a4308_1  
terminado                 0.12.1           py37h89c1867_0    conda-forge
testpath                  0.5.0              pyhd8ed1ab_0    conda-forge
threadpoolctl             2.2.0              pyh0d69192_0  
tk                        8.6.10               hbc83047_0  
tokenizers                0.10.3                   pypi_0    pypi
tornado                   6.1              py37h5e8e339_1    conda-forge
tqdm                      4.62.3                   pypi_0    pypi
traitlets                 5.1.0              pyhd8ed1ab_0    conda-forge
transformers              4.3.2                    pypi_0    pypi
typing_extensions         3.10.0.2           pyha770c72_0    conda-forge
urllib3                   1.26.7             pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          0.57.0           py37h89c1867_4    conda-forge
werkzeug                  2.0.1              pyhd3eb1b0_0  
wheel                     0.37.0             pyhd3eb1b0_1  
wrapt                     1.12.1           py37h7b6447c_1  
xgboost                   1.3.3            py37h06a4308_0  
xz                        5.2.5                h7b6447c_0  
zeromq                    4.3.4                h9c3ff4c_0    conda-forge
zipp                      3.5.0              pyhd8ed1ab_0    conda-forge
zlib                      1.2.11               h7b6447c_3  
zstd                      1.4.9                haebb681_0  

我已经尝试安装不同的numpy版本(1.191.19.5),但到目前为止它们没有帮助。

标签: pythonnumpytensorflow

解决方案


推荐阅读