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