2019年底,TensorFlow从1.x升级为2.x,现已达2.10.x以上。由于升级时清理了大量API以简化和统一TensorFlow API,故TensorFlow2.x与TensorFlow1.x不兼容!
有人认为import tensorflow as tf 改为 :
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
可以让TensorFlow2.x的程序兼容TensorFlow1.x。但是,这又有两个问题:其一,无法利用TensorFlow2.x的改进;其二,只能兼容TensorFlow本身,并不保证兼容利用TensorFlow1.x开发的第三方程序包。
由于显卡驱动CUDA、cuDNN版本与TensorFlow、Python、编译器MSVC、构建工具Bazel是绑定的,TensorFlow大有牵一发而动全身之势。如不特别指定,pip下载的第三方程序包都是最新的包,也就不兼容TensorFlow1.x的程序。如要特别指定大量第三方程序包的版本,不仅很麻烦,也可能找不到。
因此,深度学习避坑的最好方法是使用基于TensorFlow2.x的书,不使用基于TensorFlow1.x的书。由于TensorFlow在2019年10月升级为2.x,按写书至少花1年,出版大约1年推算,购买2022年以后出版的深度学习的书,再看其有无声明用TensorFlow2.x,就可以避坑了。