Tensorflow 合并两个具有不同形状的层以复制SiamRPN

Tensorflow 合并两个具有不同形状的层以复制SiamRPN,tensorflow,keras,Tensorflow,Keras,我试图用Keras复制这篇论文。 架构如下所示。 在我的代码中给出这个 Template\u input\u shape=(127,127,3) 检测\输入\形状=(255,255,3) //输入 输入\模板=tf.keras.input(形状=模板\输入\形状) 输入\检测=tf.keras.input(形状=检测\输入\形状) //用alexNet模型制作 已处理的模板=alexNet(输入模板)/(6,6,256)输出 已处理的检测=alexNet(输入检测)/(22,22,256)输

我试图用Keras复制这篇论文。 架构如下所示。

在我的代码中给出这个

Template\u input\u shape=(127,127,3)
检测\输入\形状=(255,255,3)
//输入
输入\模板=tf.keras.input(形状=模板\输入\形状)
输入\检测=tf.keras.input(形状=检测\输入\形状)
//用alexNet模型制作
已处理的模板=alexNet(输入模板)/(6,6,256)输出
已处理的检测=alexNet(输入检测)/(22,22,256)输出
//亚历克斯内特代表我的模特。
//在(如果我理解的很清楚的话)输出被分配到分类模型和回归模型之后
def分类分支(输入a、输入b、锚定=5、输出=256):
cls_x=keras.layers.Conv2D(256,内核大小=3)(输入输出)
cls_z=keras.layers.Conv2D(输出,内核大小=3)(输入输出)
cls=分类分支(已处理的模板、已处理的检测)

rgr=回归分支(已处理的模板,已处理的检测)
是,
Keras.layers。串联要求传递给它的两个卷积层具有相同的形状

在这种情况下,可以使用
上采样层

例如,假设
cls_x
的形状是
(无,80,128,8)
cls_z
的形状是
(无,40,64,8)
,您可以使用

p1 = keras.layers.UpSampling2D(size = (2, 2))(c2)
在这一步之前

Keras.layers.concatenate([cls\ux,cls\uz])

这将使
cls_z
的形状乘以2,因此,cls_x和cls_z的形状将变得相等

注:根据我们的要求,我们也可以将(1.5,1.5)等十进制大小传递到
UpSampling2D