'tensorflow' 在运行 yad2k 生成模型 H5 文件时没有属性'space_to_depth' TensorFlow 2.3 错误



我正在尝试生成YOLOv2模型yolo.h5,以便加载这个预训练的模型。我正在尝试将吴恩达coursera Yolo作业(在tensorflow 1.x中运行(移植到tensorflow 2.3。

多亏了tensorflow的升级,我才能够干净地移植它(https://www.tensorflow.org/guide/upgrade),但我几乎没有意识到我无法下载yolo.h5文件(要么它被损坏,要么下载超时(,因此我认为我应该构建一个,并按照https://github.com/JudasDie/deeplearning.ai/issues/2.当我克隆YAD2k repo并下载yolo.weights和yolo.cfg时,它看起来非常直观。我按照说明运行了以下命令:

python yad2k.py yolo.cfg yolo.weights model_data/yolo.h5

但我得到了以下错误:-

Traceback (most recent call last):
_main(parser.parse_args())
File "yad2k.py", line 233, in _main
Lambda(
File "/home/sunny/miniconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 
925, in __call__
return self._functional_construction_call(inputs, args, kwargs,
File "/home/sunny/miniconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 
1117, in _functional_construction_call
outputs = call_fn(cast_inputs, *args, **kwargs)
File "/home/sunny/miniconda3/lib/python3.8/site-packages/tensorflow/python/keras/layers/core.py", line 903, i
n call
result = self.function(inputs, **kwargs)
File "/home/sunny/YAD2K/yad2k/models/keras_yolo.py", line 32, in space_to_depth_x2
return tf.space_to_depth(x, block_size=2)
AttributeError: module 'tensorflow' has no attribute 'space_to_depth'

从所有的聊天中,我发现上面的内容需要在tensorflow 1.x中运行。然而,这让我回到了我开始的地方,即在tensorflow 1.x中进行。我很想坚持使用tensorflow 2.3。

想知道是否有人能指引我到这里。坦率地说,我所需要的只是一个型号为hd5的文件。但我认为生成一个会比获得一个更好。

当您将yad2k repo下的所有代码(特别是models文件夹下的yad2k.py和python文件(升级到tensorflow 2.x时,上述问题就会消失。tensorflow提供的漂亮的升级实用程序为您带来了神奇的效果,它替换了对兼容的tf.compat.v1.space_to_depth(input=x,block_size=…(的原始调用

因此,对于那些计划努力降低tensorflow和keras级别的人,我建议他们尝试tensorflow升级。这节省了很多时间。

这可以处理我的模型h5文件创建。糟糕的是,当我问这个问题的时候,我没有想过。

最新更新