当前位置: 代码迷 >> 综合 >> NotImplementedError: Cannot convert a symbolic Tensor (strided_slice:0) to a numpy array(不需要降低版本)
  详细解决方案

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

热度:15   发布时间:2023-11-14 01:16:32.0

这个问题一般是三个原因,降低/升高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.passreturn None

参考:

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

  相关解决方案