AttributeError: module ‘keras.backend‘ has no attribute ‘control_flow_ops‘

项目名称:

基于yolov3的目标检测

问题描述

在完成对car和person两个类别目标检测的训练时遇到进程已结束,退出代码为 -1073740791 (0xC0000409)问题,之后用Anaconda prompt 终端运行py文件显示具体错误,错误详情如下:

Traceback (most recent call last):
  File "train.py", line 190, in <module>
    _main()
  File "train.py", line 33, in _main
    freeze_body=2, weights_path='./model_data/yolo_weights.h5') # make sure you know what you freeze
  File "train.py", line 130, in create_model
    [*model_body.output, *y_true])
  File "D:\anacoda\anaconda\lib\site-packages\keras\backend\tensorflow_backend.py", line 75, in symbolic_fn_wrapper
    return func(*args, **kwargs)
  File "D:\anacoda\anaconda\lib\site-packages\keras\engine\base_layer.py", line 489, in __call__
    output = self.call(inputs, **kwargs)
  File "D:\anacoda\anaconda\lib\site-packages\keras\layers\core.py", line 716, in call
    return self.function(inputs, **arguments)
  File "D:\PythonSpace\PythonProject\Deeplearning\Test3\keras-yolo3\yolo3\model.py", line 394, in yolo_loss
    _, 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.backend里找不到control_flow_ops这个类了
原因在于keras版本和tensorflow不对应


解决方案:

1.Keras本身是在TensorFlow基础上构建的高层API,也就是说我们使用的control_flow_ops本身就是Keras调用TF的函数,现在Keras没办法调用control_flow_ops,就直接用TF调用

原代码如下:

 _, ignore_mask = K.control_flow_ops.while_loop(lambda b,*args: b<m, loop_body, [0, ignore_mask])

修改后:

 _, ignore_mask = tf.while_loop(lambda b,*args: b<m, loop_body, [0, ignore_mask])

2.在Keras里找到control_flow_ops就可以了

我在Keras源码里没找到control_flow_ops,有兴趣的人可以去找一找

3.关于AttributeError问题,很多都是版本更新导致的,可以通过pip install keras==XXX来修改版本

需要找到相对应的tensorflow和keras的版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值