python - 如何在keras中将Conv1D的输出与Conv2D的输出结合起来
问题描述
我想通过以下方式将标量值添加到 Conv2D 操作的输出中:
num_filters = 16
num_targets = 10
input_conv = layers.Conv2D(num_filters, (3, 3), activation='relu', padding='same')(input_img)
target_conv = layers.Conv1D(num_filters, num_targets, use_bias=False, activation='linear')(label)
# TODO: add output target_conv to input_conv along each of the filter dimensions
# this is like adding a scalar value for each of the filter dimensions
input_conv
输出是 shape(None, 28, 28, 16)
和target_conv
是 shape ,其中(None, 1, 16)
28 x 28 对应于图像尺寸,16 是过滤器的数量。对于每个过滤器(16 个维度中的每一个),我想将相应的 target_conv 值添加为标量。所以想象一下,我们只是查看第一个过滤器的输出input_conv
和target_conv
,它给了我们形状 (None, 28, 28, 1) 和 (None, 1, 1)。我想将输出添加target_conv
到input_conv
第一个过滤器仍将输出 (None, 28, 28, 1) 的输出,然后每个过滤器维度都会发生这种情况以输出 (None, 28, 28, 16)。
但是,我不确定如何实现这一点?
解决方案
您需要做的只是将一维添加到 target_conv 输出,以便将其变为 4D。这使您可以在两个输出之间进行简单的求和
num_filters = 16
input_img = Input((28,28,1))
label = Input((10,1))
input_conv = Conv2D(num_filters, (3, 3),
activation='relu', padding='same')(input_img) # (None,28,28,num_filters)
target_conv = Conv1D(num_filters, 10,
use_bias=False, activation='linear')(label) # (None,1,num_filters)
target_conv = Reshape((1,1,num_filters))(target_conv) # (None,1,1,num_filters)
sum_filter = Add()([input_conv,target_conv]) # (None,28,28,num_filters)
m = Model([input_img,label], sum_filter)
m.summary()
推荐阅读
- javascript - 将 jquery 变量传递给 codeigniter 视图
- css - 悬停动画自动淡出和淡入
- azure - Azure PowerShell Runbook Get Set Az-Disk dynamically
- xpath - SAP PI XSLT 映射中具有否定条件的 XPATH 表达式
- laravel - 如何在 laravel tymons/jwt-auth 中创建令牌
- java - 无法解析符号 hbase
- asp.net-mvc - 如何将 PDF 文件名更改为文件名,因为它在 mvc 中将函数名显示为文件名
- java - maven工具中插件和依赖的区别(解压jar)
- php - 提交按钮的 HTML 不会将数据插入数据库并一起重定向到 URL
- wso2 - 从私有 git 存储库读取 swagger 文件时出现 WSO2 身份验证错误