问题
环境
Python 3.8
Tensorflow 2.3
导入的包
from tensorflow.python.keras import *
from tensorflow.python.keras.layers import *
程序确定没有问题但是运行会报错Inputs to eager execution function cannot be Keras symbolic tensors, but found [<tf.Tensor ‘input_2:0’
解决
根据TF 2.0文档,创建模型有两种方法,一种是通过面向对象的方法,另一种是使用keras功能api。尽管有一些示例在keras功能模型中调用了图层子类,但在keras功能api中没有调用模型子类的实例。
本人就是用keras的API搭建模型,tf 2.0中默认情况下会启用急切执行
(1)解决办法一
是换Tensorflow为2.0版本
创建一个新的conda环境
conda create -n tf2 python=3.6
conda activate tf tf2安装tensorflow2.0版本
pip install tensorflow-gpu==2.0 -i https://pypi.douban.com/simple/
(2)解决办法二
只在tensorflow2.0成功,在tensorflow2.3不成功
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
(2)解决办法三
在代码的中添加一行
tf.config.experimental_run_functions_eagerly(True)
以下内容来源参考资料
tf.config.experimental_run_functions_eagerly(True)的文档中,它说在调试和阅读功能API规范时很有用,并且它的意思是,如果编译由功能API构建的模型而没有任何错误,则可以使用该模型进行训练,不会出现任何错误。