我正在尝试对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:'输入'”。这是Bug还是keras save命令缺少我的东西?我在MacOS和ubuntu容器中尝试了该命令。结果相同。
编辑:它与resnet的官方keras实现一起工作。通过这种实现,尽管我必须更改keras-retinanet的最简单实现的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。我希望它不会对我的网络培训产生不利影响。
您需要使用h5等格式保存模型。我转载了您的错误,并通过以下方式修复了该错误:
resnet.save("mymodel.h5")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句