如何在同一网络的顶层添加 vgg16 中间层功能?

问题描述

我想从浅层和顶层添加特征,假设是 56 x 56x 512 和 14x14x512,然后我将其上采样 4 并得到相同的 56x56x512,添加它,然后通过步幅卷积/最大下采样-池化,然后馈送到 rpn(转换所需大小后)以生成提案。但是在 rpn 层的训练过程中,它显示一个位置的大小不匹配。

块 1

x = Conv2D(64,(3,3),activation='relu',padding='same',name='block1_conv1')(img_input)
x = Conv2D(64,name='block1_conv2')(x)
x = MaxPooling2D((2,2),strides=(2,name='block1_pool')(x)

# Block 2
x = Conv2D(128,name='block2_conv1')(x)
x = Conv2D(128,name='block2_conv2')(x)
x = MaxPooling2D((2,name='block2_pool')(x)

# Block 3
x_3= x
x = Conv2D(256,name='block3_conv1')(x)
x = Conv2D(256,name='block3_conv2')(x)
x = Conv2D(256,name='block3_conv3')(x)
x = MaxPooling2D((2,name='block3_pool')(x)

#edit (conv4_b)

x_3 = Conv2D(256,name='block_3_conv1')(x_3)
x_3 = Conv2D(256,name='block_3_conv2')(x_3)
x_3 = Conv2D(256,name='block_3_conv3')(x_3)
x_3 = Conv2D(512,(1,1),name='block_3_conv4')(x_3)

# Block 4

x = Conv2D(512,name='block4_conv1')(x)
x = Conv2D(512,name='block4_conv2')(x)
x = Conv2D(512,name='block4_conv3')(x)
x = MaxPooling2D((2,name='block4_pool')(x)

#edit (conv5_b)
x_4=x_3
x_4 = Conv2D(512,name='block_4_conv1')(x_4)
x_4 = Conv2D(512,name='block_4_conv2')(x_4)
x_4 = Conv2D(512,name='block_4_conv3')(x_4)
    
# Block 5

x = Conv2D(512,name='block5_conv1')(x)
x = Conv2D(512,name='block5_conv2')(x)
x = Conv2D(512,name='block5_conv3')(x)
# x = MaxPooling2D((2,name='block5_pool')(x)

#edit

x = tf.keras.layers.UpSampling2D(size=(4,4),interpolation='nearest')(x)

    
 x = tf.keras.layers.Add()([x_4,x])

print(x_4.shape)
print(x.shape)

x = Conv2D(512,name='block5_conv4')(x) 
x = MaxPooling2D((2,name='block5_pool')(x)  

print(x.shape)

return x

x_4.shape (无,56,512) x.shape (None,512)

(return)x.shape (None,14,512)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...