解决 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 那前者就没法使用了。

一般来说,在代码需要修改不多的情况下,通过查看包的方法来修改源代码,步骤如下:

  1. 打开 Pycharm,新建一个项目,然后环境用的是和 notebook 一样的环境(如果用的 Pycharm 则跳过此步骤)
  2. 随便新建一个 py 文件,然后按两下 shift,在弹出的搜索界面输入 set_random_seed
    解决 tensorflow 由于升级产生的兼容性的问题_第1张图片
    点进去,可以看到这个方法是被放到哪个包下面了
    解决 tensorflow 由于升级产生的兼容性的问题_第2张图片

根据上面的路径,我们修改一下源代码:

import tensorflow.python.framework.random_seed as rs
rs.set_random_seed(777)  

这样子就可以运行了

你可能感兴趣的:(Python,python,tensorflow,深度学习)