自学TF搭建YOLO的采坑指北

ATTENTION

我的是TF2.5版本 所以在调用很多函数的情况都会出现版本不兼容的报错

0.学习中使用TensorFlow可不能缺少这个网站啊,好东西给大家分享
https://tensorflow.google.cn/versions
包含各个版本的代码api

1.在二代中其实还兼容一代 的部分函数只不过名字变了 所以需要改名
例如tf.compat.v1.reset_default_graph替代了tf.reset_default_graph
所以可以查一下就行

2.许多模块的函数更新后缺失了 可以网上找到自己加进去

def populate_dict_with_module_objects(target_dict, modules, obj_filter):
  for module in modules:
    for name in dir(module):
      obj = getattr(module, name)
      if obj_filter(obj):
        target_dict[name] = obj

def to_snake_case(s):
    return ''.join(['_' + ch.lower() if ch.isupper() else ch for ch in str(s)]).lstrip('_')

可以放到该路径下的文件修改

3.随着版本更新旧版本中的函数参数也会出现变化

TypeError: convolution_v2() got an unexpected keyword argument 'filter'

出现该报错后,全网找解答方法 没有找到,直到最后自己终于发现了问题存在哪。
以一个同类型的问题(convolution_v2() got an unexpected keyword argument ‘dilation_rate’)做演示:
在这里插入图片描述
定位到错误源头不在dispatch里而是backend的文件里,调用显示如下

在这里插入图片描述
可以看的出代码中的参数输入名称与这个理论接受名称不同,其中之前的问题是filter缺少s,我已修改,这里可以将dilation后面删掉做匹配即可。

4.又是版本兼容的问题

_, ignore_mask = K.control_flow_ops.while_loop(lambda b,*args: b<m, loop_body, [0, ignore_mask])
AttributeError: module 'keras.backend' has no attribute 'control_flow_ops'

分析了旧版本Keras的文件代码
点此查看Keras历史版本代码
就是之前有import 新版本没有import 在新版本里的backend.py里面添加一下一下代码就行

from tensorflow.python.ops import control_flow_ops

效果如图

在这里插入图片描述
记住是在backend.py里添加而不是model.py里面添加

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值