tensorflow兼容处理 tensorflow.compat.v1及module ‘tensorflow‘ has no attribute ‘reset_default_graph‘等问题汇总(
Posted sereasuesue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow兼容处理 tensorflow.compat.v1及module ‘tensorflow‘ has no attribute ‘reset_default_graph‘等问题汇总(相关的知识,希望对你有一定的参考价值。
使用2.0中的v1兼容包来沿用1.x代码
TensorFlow 2.0中提供了tensorflow.compat.v1代码包来兼容原有1.x的代码,可以做到几乎不加修改的运行。社区的contrib库因为涉及大量直接的TensorFlow引用代码或者自己写的Python扩展包,所以无法使用这种模式。TensorFlow 2.0中也已经移除了contrib库,这让人很有点小遗憾的。
使用这种方式升级原有代码,只需要把原有程序开始的TensorFlow引用
import tensorflow as tf
替换为以下两行就可以正常的继续使用:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
其它代码无需修改。个人觉得,如果是稳定使用中、并且没有重构意愿的代码,这种方式算的上首选。
使用迁移工具来自动迁移1.x代码到2.0
TensorFlow 2.0中提供了命令行迁移工具,来自动的把1.x的代码转换为2.0的代码。工具使用方法如下(假设我们的程序文件名称为first-tf.py):
详见博客https://blog.csdn.net/kyle1314608/article/details/100594884
编写原生的TensorFlow 2.0程序
推荐的演进方式,当然还是学习TensorFlow 2.0的相关特征,重构原有代码为新版本代码才是正路。平心而论,毕竟绝大多数系统的升级都是为了提供更多功能和降低使用门槛。TensorFlow 2.0也是大幅的降低了使用门槛的。大多数的工作比起1.x版本来,都能使用更少的代码量来完成。
首先了解一下TensorFlow 2.0同1.x之间的重要区别:
- 在API层面的类、方法有了较大的变化,这个需要在使用中慢慢熟悉
- 取消了Session机制,每一条命令直接执行,而不需要等到Session.run
- 因为取消了Session机制,原有的数学模型定义,改为使用Python函数编写。原来的feed_dict和tf.placeholder,成为了函数的输入部分;原来的fetches,则成为了函数的返回值。
- 使用keras的模型体系对原有的TensorFlow API进行高度的抽象,使用更容易
- 使用tf.keras.Model.fit来替代原有的训练循环。
正常情况下,最后一项tf.keras.Model.fit能够大大的降低训练循环的代码量。但在本例中,我们模拟了一个现实中并不适用的例子,keras中并未对这种情形进行优化。
以上是关于tensorflow兼容处理 tensorflow.compat.v1及module ‘tensorflow‘ has no attribute ‘reset_default_graph‘等问题汇总(的主要内容,如果未能解决你的问题,请参考以下文章
基于 Intel 的显卡是不是与 tensorflow/GPU 兼容?
请问下tensorflow2.0没有placeholder了吗,为啥我用1.9也有不兼容问题