快速将tensorflow1.代码改为tf2.运行

如何快速将tesorflow1.代码运行在tensorflow2.环境中?

有如下方法

命令行执行

 tf_upgrade_v2 --infile rnn_model.py --outfile rnn_model2.py
#  tf_upgrade_v2 --infile tf1文件 --outfile 生成的tf2文件

结果如图


理想状态下转换完成就可以直接执行了现实是大概率不可以的。
其中大多数的错误是由contrib模块引起的,tensorflow1版本中contrib模块十分丰富,但是发展不可控,因此在teorflow2版本中将这个模块集成到其他模块中去了。所以需要自己改写以下代码。不同的函数对应不同的解决方法
以下举两个例子供大家参考


报错AttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'

#原代码
return tf.contrib.rnn.DropoutWrapper(cell, output_keep_prob=self.keep_prob)
#更改后
return tf.nn.rnn_cell.DropoutWrapper(cell, output_keep_prob=self.keep_prob)

为什么这样改,查tensorflow官网API得到的


注:我文件头已经引入import tensorflow.compat.v1 as tf所以简写了


报错AttributeError: module 'tensorflow.python.keras.api._v1.keras.layers' has no attribute 'dropout'


尝试将代码改为第一个

#原代码            
fc = tf.contrib.layers.dropout(fc, self.keep_prob)
#修改后            
fc = tf.nn.dropout(fc, self.keep_prob)

完美运行

甚至比tensorflow1模型准确率高了一个百分点。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容