Keras超网络的实现?

Keras超网络的实现?,keras,neural-network,conv-neural-network,Keras,Neural Network,Conv Neural Network,在Keras中实现超级网络最直接的方法是什么?也就是说,网络的一个分支为另一个分支创建权重?特别是,我想进行模板匹配,将模板输入到CNN分支,该分支为在主图像上运行的分支生成卷积内核。我不确定的是,我有一个CNN层,它是从外部输入重量的,但是梯度仍然可以正确地通过训练。重量腿: 对于权重腿,只需像使用Keras一样创建区域网络 确保其输出的形状类似于(空间内核大小1、空间内核大小2、输入通道、输出通道) 使用函数API,您可以创建一些权重,例如: inputs = Input((imgSize1

在Keras中实现超级网络最直接的方法是什么?也就是说,网络的一个分支为另一个分支创建权重?特别是,我想进行模板匹配,将模板输入到CNN分支,该分支为在主图像上运行的分支生成卷积内核。我不确定的是,我有一个CNN层,它是从外部输入重量的,但是梯度仍然可以正确地通过训练。

重量腿: 对于权重腿,只需像使用Keras一样创建区域网络

确保其输出的形状类似于
(空间内核大小1、空间内核大小2、输入通道、输出通道)

使用函数API,您可以创建一些权重,例如:

inputs = Input((imgSize1, imgSize2, imgChannels))

w1 = Conv2D(desired_channels, ....)(inputs)
w2 = Conv2D(desired_channels2, ....)(inputs or w1)
....
您应该在这里应用某种类型的池,因为您的输出将具有巨大的大小,并且您可能需要具有较小大小的过滤器,如3、5等

w1 = GlobalAveragePooling2D()(w1) #maybe GlobalMaxPooling2D
w2 = GlobalAveragePooling2D()(w2)
如果您使用固定的图像大小,还可以使用其他类型的池或展平和密集等

确保将权重重塑为正确的形状

w1 = Reshape((size1,size2,input_channels, output_channels))(w1)
w2 = Reshape((sizeA, sizeB, input_channels2, output_channels2))(w2)
....
频道数量的选择取决于您的优化

卷积支腿: 现在,这个分支将只使用“不可训练”卷积,它们可以直接在后端找到,并在
Lambda
层中使用:

out1 = Lambda(lambda x: K.conv2d(x[0], x[1]))([inputs,w1])
out2 = Lambda(lambda x: K.conv2d(x[0], x[1]))([out1,w2])
现在,你将如何交错层,多少权重,等等,也是你应该为自己优化的事情

创建模型:

model = Model(inputs, out2)
交错 您也可以将此支腿的输出作为权重生成器支腿的输入:

w3 = Conv2D(filters, ...)(out2)
w3 = GlobalAveragePooling2D()(w3)
w3 = Reshape((sizeI, sizeII, inputC, outputC))(w3)
out3 = Lambda(lambda x: K.conv2d(x[0], x[1]))([out2,w3])

谢谢,非常有帮助。我现在很接近,但是我的lambda层中的conv2d很生气,因为过滤器的维度是[?,spatial1,spatial2,channels\u in,channels\u out],其中“?”是批处理维度。它似乎不理解像标准层那样自动忽略批处理维度。结果是,在内部,它认为我在3D中,我得到了一个“列表索引超出范围”错误。有什么办法吗?嗯,没错。。。。我必须考虑一下。。。。是否希望更改每个样本的权重?我能想到的第一件事,很可能不是很快,就是有一个固定的批量大小(使用
batch\u shape
batch\u input\u shape
创建模型,然后将过滤器拆分为n个过滤器,然后为每个示例的每个过滤器创建一个conv。我仍在使用它(它构建了,但没有尝试过培训),但我最终制作了一个自定义lambda层,该层在批大小上循环。文档有点不清楚,但conv2d()对输入有一个隐含的批维度,但对筛选器/内核没有。我的自定义层在筛选器的批维度上循环然后将结果重新连接在一起。要清楚,我的应用程序包含由三个元素组成的批处理元素:(模板、图像、所需结果)。是的,这就是建议。批处理中每个项目一个conv(奇怪,非最佳,但似乎这是我唯一能看到的)