NotImplementedError: Cannot convert a symbolic Tensor (strided_slice:0) to a numpy array(不需要降低版本)

这个问题一般是三个原因,降低/升高numpy的版本,降低/升高tensorflow的版本,这个很容易找到,这里介绍的是一种不需要版本更新的方法。

注:最下方的github中包含多种解决方法。

通过修改array_ops.py解决bug

1. 找到通过pip安装tensorflow的位置,如果不知道的话,就直接 pip install tensorflow,系统会提示tensorflow已经安装了,找到这个路径。

# 找到 array_ops.py 的路径
cd C:\Users\USERNAME\anaconda3\Lib\site-packages\tensorflow\python\ops\

2. 修改 array_ops.py文件(记得备份源文件)

cp array_ops.py  array_ops_copy.py
vi array_ops.py 

3. 在最开头的import部分,添加下面内容,导入这个包

from tensorflow.python.ops.math_ops import reduce_prod

然后搜索下面的这个方法 def _constant_if_small,并用下面的内容替换原来的方法,在vim中搜索为按 ESC,然后 按 /,然后输入搜索的内容 

def _constant_if_small(value, shape, dtype, name):
  try:
    if reduce_prod(shape) < 1000:
      return constant(value, shape=shape, dtype=dtype, name=name)
  except TypeError:
    # Happens when shape is a Tensor, list with Tensor elements, etc.
    pass
  return None

参考:

NotImplementedError: Cannot convert a symbolic Tensor (strided_slice:0) to a numpy array. · Issue #9706 · tensorflow/models · GitHub

猜你喜欢

转载自blog.csdn.net/qq_37424778/article/details/123536772