无法保存 Keras 模型,这是一个错误吗?
Cannot save a Keras model, is this a bug?
我正在尝试对 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 层的代码:
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。我希望它不会对我的网络训练产生不利影响。
您需要使用某种格式保存模型,例如h5。
我重现了你的错误,修复了它:
resnet.save("mymodel.h5")
我正在尝试对 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 层的代码:
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。我希望它不会对我的网络训练产生不利影响。
您需要使用某种格式保存模型,例如h5。 我重现了你的错误,修复了它:
resnet.save("mymodel.h5")