升级tensorflow2.0后,Mask R_CNN的调试笔记

升级tensorflow2.0后,Mask R_CNN的调试笔记

让人头大的改变

新旧版本还是有很多差异的,很多API在新版本中弃用了或是移动了位置,TF提供了脚本应用程序可以自动的转换文件代码,但并不是所有的都可以实现自动转换,比如取消或是移动了的API,还是需要手动添加compat.v1,比较大型的工程文件也是无法直接转换的,所以我也没有用那个脚本。

1.一开始调试的错误基本都是新旧版本不兼容的问题,通过查询新API对比旧方法就可以做出改动,tensorflow官网对2.0版本的API还算是比较详细,会有新旧API名称放在一起供我们挑选,在搜索框里搜索一下方法名一般就会出来了。对于取消掉的模块有一部分如果坚持要使用也是可以在tf.compat中找到的。比如:
升级tensorflow2.0后,Mask R_CNN的调试笔记_第1张图片
2.在这里插入图片描述
升级tensorflow2.0后,Mask R_CNN的调试笔记_第2张图片
3.log函数统一封装到math了
在这里插入图片描述
升级tensorflow2.0后,Mask R_CNN的调试笔记_第3张图片
4.今天下午刚解决的一个错误,说tensorflow2.0的core的train中没有optimizer这个属性了,环境匹配问题,原版本keras2.2.4并不能完全支持tensorflow2.0了,搞了好几天才想起来是咋回事儿,被自己蠢哭了要,keras需要升级到2.3.0版本,这应该是keras最新版且第一版支持tensorflow2.0的。
升级命令:pip install --upgrade keras==2.3.0

5.OperatorNotAllowedInGraphError: using atf.Tensoras a Pythonboolis not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
升级tensorflow2.0后,Mask R_CNN的调试笔记_第4张图片
实在是上一版tf没怎么学,不明白是为啥,怎么就拿tensor当bool用了,我就把判断改了,嗯,可以正常运行了,算法应该也没变,我也不知道合理不合理,我实在是太菜了
升级tensorflow2.0后,Mask R_CNN的调试笔记_第5张图片

6.AttributeError: 'Model' object has no attribute 'metrics_tensors'
在这里插入图片描述
keras2.3.0有API改动,改用add_metric
官方公告
https://github.com/keras-team/keras/releases/tag/2.3.0
升级tensorflow2.0后,Mask R_CNN的调试笔记_第6张图片

7.AttributeError: 'Model' object has no attribute 'run_eagerly'
还是keras版本升级的问题
关于fit_generator(),keras的fit()函数会把训练数据一次性完整的加载进内存,在数据量很大的情况下这样操作是不可能的,所以可以用fit_generator()训练。升级tensorflow2.0后,Mask R_CNN的调试笔记_第7张图片
8.在这里插入图片描述
升级tensorflow2.0后,Mask R_CNN的调试笔记_第8张图片
9.升级tensorflow2.0后,Mask R_CNN的调试笔记_第9张图片
升级tensorflow2.0后,Mask R_CNN的调试笔记_第10张图片
10.改用tf.cast( ,dtype)升级tensorflow2.0后,Mask R_CNN的调试笔记_第11张图片

你可能感兴趣的:(Mask,R-CNN)