Google Colab 上的 Keras YoloV3,AttributeError: module 'keras.backend' has no attribute 'control_flow_o

Posted

技术标签:

【中文标题】Google Colab 上的 Keras YoloV3,AttributeError: module \'keras.backend\' has no attribute \'control_flow_ops【英文标题】:Keras YoloV3 in on Google Colab, AttributeError: module 'keras.backend' has no attribute 'control_flow_opsGoogle Colab 上的 Keras YoloV3,AttributeError: module 'keras.backend' has no attribute 'control_flow_ops 【发布时间】:2021-10-09 09:48:46 【问题描述】:

我使用 Roboflow 提供的 Keras YoloV3 implementation 在 Google Colab 上训练我自己的数据集。 尝试demo运行,出现AttributeError。

失败的解决方案1:Github Ticket 尝试将 K.control_flow_ops.while.. 更改为 tf.while... 这对我的 colab 笔记本不起作用。

错误代码:

/content/keras-yolo3/yolo3/model.py in yolo_loss(args, anchors, num_classes, ignore_thresh, print_loss)
    392             ignore_mask = ignore_mask.write(b, K.cast(best_iou<ignore_thresh, K.dtype(true_box)))
    393             return b+1, ignore_mask
--> 394         _, ignore_mask = ts.while_loop(lambda b,*args: b<m, loop_body, [0, ignore_mask])
    395         ignore_mask = ignore_mask.stack()
    396         ignore_mask = K.expand_dims(ignore_mask, -1)

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

我知道由于 Google Colab 不断更新预安装的库,存在一些问题。

Google Colab 库的原始版本如下。

Python 3.7.11
Name: tensorflow
Version: 2.5.0
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: packages@tensorflow.org
License: Apache 2.0
Location: /usr/local/lib/python3.7/dist-packages
Requires: numpy, wheel, termcolor, astunparse, opt-einsum, keras-nightly, flatbuffers, protobuf, typing-extensions, six, google-pasta, gast, tensorflow-estimator, keras-preprocessing, tensorboard, wrapt, h5py, grpcio, absl-py
Required-by: kapre
Name: Keras
Version: 2.4.3
Summary: Deep Learning for humans
Home-page: https://github.com/keras-team/keras
Author: Francois Chollet
Author-email: francois.chollet@gmail.com
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: scipy, h5py, pyyaml, numpy
Required-by: keras-vis
Name: h5py
Version: 3.1.0
Summary: Read and write HDF5 files from Python
Home-page: http://www.h5py.org
Author: Andrew Collette
Author-email: andrew.collette@gmail.com
License: BSD
Location: /usr/local/lib/python3.7/dist-packages
Requires: numpy, cached-property
Required-by: tensorflow, Keras, keras-vis

我还关注了this post,并将所有库降级为this response。此外,我尝试使用此替代方案降级 TensorFlow:

%tensorflow_version 1.x

这并没有解决问题。任何帮助都非常感谢。

【问题讨论】:

你能分享更多关于你的错误的堆栈跟踪吗?我的意思不仅仅是触发它的行,而是从它实际失败的库(tf,keras)的跟踪...... 【参考方案1】:

选项 1:您可以根据存储库要求将 Keras 从 2.4.3 降级到 2.1

选项 2:您可以在 "import tensorflow as tf " 之后使用 tf.while_loop 而不是 K.control_flow_ops.while_loop 在这里看到一个拼写错误“ts”而不是 tf

 _, ignore_mask = ts.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])

【讨论】:

以上是关于Google Colab 上的 Keras YoloV3,AttributeError: module 'keras.backend' has no attribute 'control_flow_o的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以找到安装在google Colab中的现有软件包

如何在 Google colab 中更改 Keras/tensorflow 版本?

Google Colab 中的 Keras 调谐器和 TPU

Google驱动器与COLAB断开连接

Google Colab keras Sequential 模型返回一个空的 history.history 对象“”

使用 TPU 运行时在 Google Colab 上训练 Keras 模型时出错