python - 使用 keras 在各个层上应用卷积
问题描述
我有一个预训练的 VGG16 网络,并使用迁移学习修改了 PASCAL VOC 2012 数据集的网络。现在,我想从修改后的 VGG16 网络中获取每一层的输出,并在每一层上应用卷积,然后将它们上采样到相同的大小并添加它们。这是为了识别图像中的重要区域。我已经从每一层获取了输出
output = [layer.output for layer in model.layers]
现在我想要类似的东西
hypercolumns = []
for op in output:
#apply convolution on this output layer
#upsample it to the size of the input image
#store this in hypercolumns list
最后,在对所有层进行上采样后,我将从列表中添加它们以获得单个矩阵。现在,我对如何在不创建模型和进行上采样的情况下应用卷积感到困惑。keras有没有办法。
解决方案
有几种方法可以实现这一点,其中一些在 Keras FAQ中列出。我不知道那里列出的两种主要方式之间有任何显着差异,因此请尝试两种方式,看看有什么用。这是您可以执行的操作的示例:
input = model.layers[0].input
for op in output:
intermediate_function = K.function([input], [output])
layer_output = intermediate_function([YOUR_INPUT_DATA_HERE])[0]
# do the upsampling and stuff here
推荐阅读
- jquery - 在 SPA 中更改 Facebook 元标记,但共享时无法识别 OG 元标记更改
- php - PHP HTTP Header 多次出现并显示相同的消息
- javascript - 未指定表的 SELECT * 无效
- java - 如何对具有覆盖率的 void 函数执行单元测试
- reactjs - 如何修复 create-react-app 中未找到的 404
- mule - 数据转json
- sql - OVER partition BY 没有给出正确的结果
- matlab - 在 EEGLAB 中加载 .bdf 文件
- python - 通过左连接 SQL 和 Pandas 合并数据框
- android - 电话号码和电子邮件验证都可以在 Firebase 中应用吗?