在tensorflow 2.x环境下使用tensorflow 1.x的方法

本文介绍了一种在TensorFlow 2.x环境中使用1.x版本特性的简便方法,仅需少量代码调整即可实现。此外还讨论了转换过程中可能遇到的问题,如GPU不工作及函数不兼容等,并提供了相应的解决方案。

两天晕晕的教训,含泪整理在tensorflow 2.x环境下使用tensorflow 1.x的方法,超级简单!!!!!!!!!!!!!

不需要改代码,不需要不需要!!!
只需要在程序前面加入

import tensorflow     
tf = tensorflow.compat.v1  # 正常应该是import tensorflow.compat.v1 as tf,但是知道我为啥一直不行,这样也可以叭~
tf.disable_v2_behavior()

还有
继续
即使是转成了1.x,但是有些函数依旧不能使用,比如哈:
contrib函数
查一查哪里用到了,比如我用到了tf.contrib.layers.xavier_initializer(),那就替换成tf.keras.initializers.glorot_normal()

代码还有很多坑,版本问题在我把从1.x改为2.x之后出现了更多的坑之后,终于找到了这个方法,没错,方法很脆弱,但是可以解决大部分不兼容的问题哈。
继续采坑去了~~!!!

----------------------------------------------------分割线----------------------------------------------------------------------------
坑来了~
把tensorflow 改为1.x之后,发现GPU是不工作的,还是在跑CPU
合理怀疑ε=(´ο`*)))
依旧是cuda与tensorflow-gpu的版本是不一致的,没有办法找到运行文件
留个坑,继续看看
目前采用使用docker,创建一个新的虚拟环境,完结并不想撒花❀。

TensorFlow 2.x 中使用 TensorFlow 1.x 的方法,以下是一些具体情况及对应解决办法: ### 模型转换 若要把 TensorFlow 2.0 模式下训练的模型转成 TensorFlow 1.x 版本的 pb 模型,需要满足以下要求:能拿到模型的网络结构定义源码;网络结构里的所有操作都通过 `tf.keras` 完成,不能有类似 `tf.nn` 的 TensorFlow 自身操作符;TensorFlow 2.0 下保存的模型是 `.h5` 格式,且仅保存了权重,即通过 `model.save_weights` 保存的模型。符合这些条件时,`.h5` 文件在 1.x 环境下可直接使用,因为都是通过 `tf.keras` 高级封装,2.0 版本1.x 版本差异不大 [^2][^3]。 ### 数据转换 在 TensorFlow 2.x 中,若需将 Tensor 数据转换为 Numpy 数据,可使用1.x 版本相同的方式,不过在 2.x 里,会话(`Session`)机制已被移除,需采用不同方法。在 1.x 中,可使用 `with tf.Session() as sess: data_numpy = data_tensor.eval()` 进行转换 [^1]。 ### 显存自适应分配 TensorFlow 2.x 里显存自适应分配的方式和 1.x 不同。在 1.x 中,按比例配置显存的代码如下: ```python import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.7 with tf.Session(config=config) as sess: # 执行操作 pass ``` 或者使用自适应显存占用: ```python import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" config = tf.ConfigProto() config.gpu_options.allow_growth = True with tf.Session(config=config) as sess: # 执行操作 pass ``` 在 2.x 中,自适应显存占用的代码如下: ```python import tensorflow as tf gpus = tf.config.experimental.list_physical_devices(device_type='GPU') for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) ``` [^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值