结论
- 法一:新建python3.6环境,安装tensorlfow2.0.0-alpha0→py文件 禁用eager excution function【tensorflow.compat.v1.disable_v2_behavior()】
- 法二:tensorflow2.3.1不变,py文件 禁用eager excution function【tensorflow.compat.v1.disable_v2_behavior()】
两种方法完美解决问题,推荐法2省力省心,原理不懂。
用到的linux上安装conda、faiss、conda创建环境的方法
linux安装conda
- wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
- bash Miniconda3-latest-Linux-x86_64.sh #运行过程 回车,yes,yes
- cd …切到上级目录
- source .bashrc
- 测试conda env list成功就ok了
- 不成功就“rm -rf miniconda3/”,然后重复2~5安装。
linux conda安装faiss
- conda install mkl
- conda install faiss-cpu -c pytorch
- 成功
conda创建python3.6环境
- conda create -n XXX python=3.6 #命名为XXX的python3.6环境
- conda activate XXX #激活命名为XXX的python3.6环境
- deactivate #退出该环境
记录过程
最近学习推荐系统,用到faiss,需要linux系统,然后就用deepnote了。默认的python环境是3.7.9,然后装conda很顺利,faiss很顺利,tensorflow也很顺利(pip install tensorflow),结果tensorflow版本是2.3.1,运行代码出错【Inputs to eager excution function cannot be keras symbolic tensors】,求助组织之后,助教推荐降级tensorflow到1.14.0或者2.0.0.
然后开始安装tensorflow 2.0.0-alpha0,结果报错:
查原因是python版本太高,然后开始创建3.6的python环境,安装tensorflow 2.0.0-alpha0,这次完美安装了。一切看上去很顺利,运行py文件时候又出现了报错【Tensor.graph is meaningless when eager execution is enabled.】
通过下述代码解决了:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
然后跑起来很顺利。
然后群里的大神@我,上面的那行代码可以直接解决tensorflow2.3.1运行py文件时候的报错,试了试真有效,不用建py3.6环境不用安装低版本tensorflow就行,实在是太棒了。
参考
conda的安装与使用(2020-08-10更新)
faiss安装
Tensor.graph is meaningless when eager execution is enabled.解决办法TensorFlow2.0 使用1.x的代码时报错,