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

让人头大的改变

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

1.一开始调试的错误基本都是新旧版本不兼容的问题,通过查询新API对比旧方法就可以做出改动,tensorflow官网对2.0版本的API还算是比较详细,会有新旧API名称放在一起供我们挑选,在搜索框里搜索一下方法名一般就会出来了。对于取消掉的模块有一部分如果坚持要使用也是可以在tf.compat中找到的。比如:

mark rcnn 部署_keras2.3.0


2.

mark rcnn 部署_mask r-cnn_02


mark rcnn 部署_API_03


3.log函数统一封装到math了

mark rcnn 部署_API_04


mark rcnn 部署_mask r-cnn_05


4.今天下午刚解决的一个错误,说tensorflow2.0的core的train中没有optimizer这个属性了,环境匹配问题,原版本keras2.2.4并不能完全支持tensorflow2.0了,搞了好几天才想起来是咋回事儿,被自己蠢哭了要,keras需要升级到2.3.0版本,这应该是keras最新版且第一版支持tensorflow2.0的。

升级命令:pip install --upgrade keras==2.3.05.OperatorNotAllowedInGraphError: using atf.Tensoras a Pythonboolis not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.

mark rcnn 部署_mark rcnn 部署_06


实在是上一版tf没怎么学,不明白是为啥,怎么就拿tensor当bool用了,我就把判断改了,嗯,可以正常运行了,算法应该也没变,我也不知道合理不合理,我实在是太菜了

mark rcnn 部署_mark rcnn 部署_07

6.AttributeError: 'Model' object has no attribute 'metrics_tensors'

mark rcnn 部署_keras2.3.0_08


keras2.3.0有API改动,改用add_metric

官方公告

https://github.com/keras-team/keras/releases/tag/2.3.0mark rcnn 部署_mark rcnn 部署_097.AttributeError: 'Model' object has no attribute 'run_eagerly' 还是keras版本升级的问题

关于fit_generator(),keras的fit()函数会把训练数据一次性完整的加载进内存,在数据量很大的情况下这样操作是不可能的,所以可以用fit_generator()训练。

mark rcnn 部署_tensorflow2.0_10


8.

mark rcnn 部署_API_11


mark rcnn 部署_API_12


9.

mark rcnn 部署_tensorflow2.0_13


mark rcnn 部署_API_14


10.改用tf.cast( ,dtype)

mark rcnn 部署_API_15