【问题标题】:How to convert tf.contrib to Tensorflow 2.0如何将 tf.contrib 转换为 Tensorflow 2.0
【发布时间】:2020-05-29 18:21:28
【问题描述】:

所以我正在尝试使用 Tensorflow 实现对象检测,并且我的部分代码使用了 tf.contrib。问题是 tf.contrib 在 Tensorflow 2.0 中不受支持。

我尝试使用 tf_upgrade_v2 脚本,但收到以下消息:

错误:在已弃用的模块 tf.contrib 中使用成员 tf.contrib.slim。 tf.contrib.slim 无法自动转换。 tf.contrib 不会随 TensorFlow 2.0 一起分发,请考虑在 non-contrib TensorFlow 中使用替代方案,这是一个社区维护的存储库,例如 tensorflow/addons,或者 fork 所需的代码。

import functools
import tensorflow as tf
from object_detection.core import box_predictor
from object_detection.utils import shape_utils
from object_detection.utils import static_shape

slim = tf.contrib.slim

【问题讨论】:

  • 正如您已经指出的,TF-slim 在 2.x 中不受支持(参见例如 this issue)。如果您想升级您的 TensorFlow 版本,您可能应该考虑在 Keras 中重写您的模型。
  • 我已经在使用 TensorFlow 2.0。我应该重写整个模型还是只下载旧版本的 Tensorflow?
  • 恐怕你将不得不做出选择......如果不是很多努力(即如果模型是一堆标准层),那么重写模型可能是值得的,因为 Slim现在相当过时并且不再支持。但是,如果您有一个已经运行良好的古怪模型,您可能会发现回到旧版本更容易......
  • 你有解决办法吗?请张贴。我还没有找到任何东西。

标签: python tensorflow


【解决方案1】:

由于 tf.contrib 中的所有项目都没有得到 Tensorflow 的官方支持,并且它有指定的所有者来维护它。
所有贡献和功能都旨在合并到核心 Tensorflow 中。

从 Tensorflow 2.0 版本开始,所有 contrib 项目的未来都有以下三个选项之一:move to coremove to a separate repository;或delete,其中大部分已经与各自的项目所有者进行了审查。

link 提供tf.contrib 下所有项目的详细信息和状态。

如果您正在使用的库被移动到核心或单独的存储库,TensorFlow 从 1.x 到 2.x 的自动代码迁移将不适用于 tf.contrib 项目。您需要手动更改这些部分的代码,建议您继续这样做。

我可以在表格中看到tf.contrib.slim移动到tensorflow/models,你可以关注这个link详细使用。

【讨论】:

猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多