@[TOC](Cannot convert a symbolic Tensor (XXX:X) to a numpy array; Tensor 与numpy 无法相互转换)
- 首先考虑是否因为代码版本转换引起的问题
- 然后考虑是否因为numpy 与tensorflow 版本之间的问题
- 如果上述都不是,考虑以下问题:
a. 与其他扩展包的关系sympy, six, 等包之间的关系
b. 其他
代码版本转换引起的问题
在tf1 → tf2 的转换中,有是会对tf.config的内容进行改动,如:
tf.compat.v1.disable_eager_execution()
禁用了上述内容会引起一些改变
tf.executing_eagerly() -> False
正常时刻:
tf.executing_eagerly() 返回值为True
如果eager被禁用会导致tensor 与 numpy 无法相互转换
另外,tf2支持动态图执行,方法如下
tf.config.run_functions_eagerly(True)
# 代码块
tf.config.run_functions_eagerly(False)
@tf.function
def xxx():
pass
# or
tf.function(xxx()).numpy()
```python
# - use it -
tf.config.run_functions_eagerly(True)
a = xxx().numpy
tf.config.run_functions_eagerly(False)
# or
tf.config.run_functions_eagerly(True)
a = tf.function(xxx()).numpy
tf.config.run_functions_eagerly(False)
numpy 与tensorflow 版本之间的问题
如果是numpy 与tensorflow 版本之间的问题,一般会有提示,如果没有提示,可参照:
根据上表进行重装即可,但应注意,进行重装之后可能会引发很多版本依赖问题,如:matplotlib, pandas, 等系列依赖问题,但一般可忽略。