解决 tensorflow 由于升级产生的兼容性的问题
在网上下载某个 python 或者 notebook 后,会发现有时候没法运行,比如提示 no modules name “...”
等等问题,一般来说,这是自己本地 python 版本、包、包的版本等和原作者的版本不一致的原因。
解决这些问题主要有2个方法:
方法1:尽量将环境还原为该文件的原始环境
比如,某个 notebook 文件是基于 python3.5 写的,然后 tensorflow 的版本是 1.12,numpy 的版本是1.5 等等,一般来说,作者需要提供一个 requirements.txt 文件,该文件形式需要如下:
requirements.txt
numpy==1.5
scikit-learn
tensorflow==1.12
scipy
natsort
# pypng (required but not working with conda, use: pip install pypng )
从 pip v6.1.0 开始,pip 会先安装依赖项,然后再安装上面的包
按照上述格式,将环境和包全部装好,就能成功运行了
方法2:查看新版本的特性并修改源代码
一般来说,这个方法用于解决 tesorflow 1.xx 版本 和 2.xx 版本之间的兼容性问题,比如,我曾经下载了一个以下的源代码(作者并未提供运行环境),下面代码会报错 module 'tensorflow' has no attribute 'set_random_seed'
,因为我的 tensorflow 版本是 2.2,他的版本可能是 1.xx
import tensorflow as tf
tf.set_random_seed(777)
为了解决这个问题,网上有很多方法,比如 import tensorflow.compat.v1 as tf
或者通过降级的方式,显然这并不是通用的方法,如果在后续版本中,tensorflow 取消了 compat.v1
那前者就没法使用了。
一般来说,在代码需要修改不多的情况下,通过查看包的方法来修改源代码,步骤如下:
- 打开 Pycharm,新建一个项目,然后环境用的是和 notebook 一样的环境(如果用的 Pycharm 则跳过此步骤)
- 随便新建一个 py 文件,然后按两下 shift,在弹出的搜索界面输入
set_random_seed
点进去,可以看到这个方法是被放到哪个包下面了
根据上面的路径,我们修改一下源代码:
import tensorflow.python.framework.random_seed as rs
rs.set_random_seed(777)
这样子就可以运行了
更多推荐
所有评论(0)