【发布时间】:2021-02-17 06:53:31
【问题描述】:
我正在尝试简单保存 resnet50 模型,但出现错误。我重现错误的代码:
from tensorflow import keras
import keras_resnet
inputs = keras.layers.Input(shape=(None, None, 3))
resnet = keras_resnet.models.ResNet50(inputs, include_top=False, freeze_bn=True)
resnet.save("my-model")
我收到错误:“KeyError: 'inputs'”。这是一个错误还是我在使用 keras save 命令时遗漏了什么?我在 MacOS 和我的 ubuntu 容器中尝试了该命令。结果一样。
编辑:它与 resnet 的官方 keras 实现一起使用。有了这个实现,虽然我必须更改 keras-retinanet 的 fizyr 实现的 resnet.py 文件中的代码。具体来说,定义了 resnet:
from keras.applications.resnet import ResNet50,ResNet101,ResNet152
resnet = ResNet50(input_tensor=inputs, include_top=False)
我必须更改主干层的代码:
backbone_layers = {
'C2': resnet.outputs[0],
'C3': resnet.outputs[1],
'C4': resnet.outputs[2],
'C5': resnet.outputs[3]
}
到:
backbone_layers = {
'C2': resnet.layers[-137].output,
'C3': resnet.layers[-95].output,
'C4': resnet.layers[-33].output,
'C5': resnet.outputs[0]
}
我还没有测试它,但我认为它应该可以工作。
我看到的唯一警告是我不再有 freeze_bn 参数。有关此参数的原因,请参阅https://github.com/fizyr/keras-retinanet/issues/974。我希望它不会对我的网络训练产生不利影响。
【问题讨论】: