美文网首页
快速将tensorflow1.代码改为tf2.运行

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

作者: 都灵的夏天_ | 来源:发表于2021-10-01 23:54 被阅读0次

    如何快速将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模型准确率高了一个百分点。

    相关文章

      网友评论

          本文标题:快速将tensorflow1.代码改为tf2.运行

          本文链接:https://www.haomeiwen.com/subject/kvhpnltx.html