python - Keras resnet50 get_layer() '没有这样的层' 错误
问题描述
所以我正在使用以下代码加载 keras Resnet50 模型:
backbone = resnet50.ResNet50(include_top=False, weights=None, input_tensor=None, pooling=None, classes=1000)
我需要在github(第 75 行)的 resnet50 代码中获得一个名为“ bn5c_branch2c ”的批处理规范化层。
运行backbone.get_layer('bn5c_branch2c')
给我一个ValueError:没有这样的层:bn5c_branch2c。
使用以下命令打印图层的名称:
for layer in backbone.layers:
print(layer.name)
我发现确实没有任何层使用这个名称,而是将它们命名为“ conv5_block1_3_bn ”。但是,在 resnet50 的代码中,名称显然是“ bn5c_branch2c ”。我无法理解这是如何发生的,以及如何通过代码中分配的名称提取图层。任何帮助都会很棒。谢谢。
tensorflow - 2.3.1 keras - 2.4.3 操作系统 - Ubuntu 20.04.1 LTS
解决方案
bn5c_branch2c层适用于 Tensorflow 1.13.1。
from tensorflow.keras.applications import resnet50
from tensorflow.keras import layers
from tensorflow.keras.layers import Concatenate, Conv2D, UpSampling2D, BatchNormalization, Add, Lambda
from tensorflow.keras.models import Model
backbone = resnet50.ResNet50(include_top=False,
weights=None,
input_tensor=None,
pooling=None,
classes=1000)
C5 = backbone.get_layer('bn5c_branch2c').output
推荐阅读
- android - 有没有办法修复“尝试调用虚拟方法”?
- javascript - onPress 方法中箭头函数与正常函数的行为
- vue.js - 如何将一个 VueJS 应用程序包含到另一个 VueJS 应用程序中
- jquery - 未调用 PHP 文件/脚本
- css - 如何指定字形 unicode 字符的范围?
- c++ - 我的 findContours() 函数在具有不同 dpi 的图像上表现异常
- vba - 点击命令按钮(保存、打印或发送)时文本表单字段的不需要的重置
- titanium - 在本机应用程序中访问“Titanium.App.Properties”
- python - kivy - TypeError:描述符“属性”需要一个“kivy._event.EventDispatcher”对象,但收到一个“method_descriptor”
- c# - 如何在不更改/添加构造函数的情况下使用依赖注入