快速將tensorflow1.代碼改為tf2.運行

如何快速將tesorflow1.代碼運行在tensorflow2.環(huán)境中?

有如下方法

命令行執(zhí)行

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

結(jié)果如圖


理想狀態(tài)下轉(zhuǎn)換完成就可以直接執(zhí)行了,現(xiàn)實是大概率不可以的。
其中大多數(shù)的錯誤是由contrib模塊引起的,tensorflow1版本中contrib模塊十分豐富,但是發(fā)展不可控,因此在teorflow2版本中將這個模塊集成到其他模塊中去了。所以需要自己改寫以下代碼。不同的函數(shù)對應(yīng)不同的解決方法
以下舉兩個例子供大家參考


報錯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官網(wǎng)API得到的


注:我文件頭已經(jīng)引入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模型準(zhǔn)確率高了一個百分點。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容