NotImplementedError:无法将符号张量(lstm_2/strided_slice:0)转换为 numpy 数组。 T

问题描述 投票:0回答:9

张量流版本2.3.1 numpy 版本 1.20

代码下方

# define model
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

我们得到了

NotImplementedError:无法转换符号张量 (lstm_2/strided_slice:0) 到 numpy 数组。该错误可能表明 您正在尝试将张量传递给 NumPy 调用,这不是 支持

在我看来这是一个疯狂的错误!

python numpy tensorflow
9个回答
47
投票

我用 numpy 降级到 1.18.5 解决了

pip install -U numpy==1.18.5

15
投票

如果您使用的是 anaconda:

conda install numpy=1.19


15
投票

类似的问题,与

  • 张量流2.3.0
  • numpy 1.20.3

在 Windows 7 上。

通过修改

tensorflow/python/framework/ops.py
解决,替换

  def __array__(self):
    raise NotImplementedError(

在#845~846行与

  def __array__(self):
    raise TypeError(

.


5
投票

Tensorflow 2.5 更新:

tensorflow 和 tensorflow-gpu 2.5 软件包仍然包含 numpy-1.19.5 作为依赖项。

如果tensorflow 2.5安装与numpy>1.19.5混合使用,将会重现本文中提到的错误

tensorflow-2.5、numpy-1.19.5 与 python-3.9 兼容


2
投票

tf 2.4.1、numpy 1.21 和 python 3.9 也存在同样的问题。

使用

将 numpy 降级到 1.19.2
conda install numpy==1.19.2 

解决了我的问题。


1
投票

我遇到了同样的问题,通过将 python 从 3.8 降级到 3.6 解决了它


0
投票

我在使用 M1 芯片时遇到了这个问题。这是我修复的方法:

conda create create --name tf
conda activate tf
conda install numpy ~=1.18.5
pip install tensorflow-macos

瞧,你准备好了!


0
投票

我对

tensorflow 2.5.0
numpy 1.21.2
也有同样的问题。有人建议here
array_ops.py
文件进行更改,但这对我不起作用。同一页面中的另一个答案通过以下步骤有效。

pip uninstall tensorflow
pip install tensorflow
pip uninstall numpy
pip install numpy

基本上这些步骤不会降级 numpy,而是升级或保持在同一水平。上述步骤升级了

tensorflow 2.7.0
numpy 1.21.4
,我的代码运行没有任何问题。


0
投票

我正在使用 Tensorflow 2.2.0,我通过重新安装 numpy 解决了这个问题:

pip install -U numpy==1.18.5 
© www.soinside.com 2019 - 2024. All rights reserved.