我是新手,现在我尝试使用tensorflow2.0重现Maskrcnn的代码。
并且源代码使用tensorflow1.x和keras版本
这是我弄错的一部分源代码。我添加了一些打印功能来观察数据的尺寸:
def fpn_classifier_graph(rois, feature_maps, image_meta,
pool_size, num_classes, train_bn=True,
fc_layers_size=1024):
x = PyramidROIAlign([pool_size, pool_size],name="roi_align_classifier")([rois, image_meta] + feature_maps)
print(x.shape)
print(fc_layers_size)
print(pool_size)
#KL is keras.layers
x = KL.TimeDistributed(KL.Conv2D(fc_layers_size, (pool_size, pool_size), padding="valid"),
name="mrcnn_class_conv1")(x)
print(x.shape)
这是结果:
(8,?,7,7,256)(问号代表无)
1024
7
(?, 32,1,1,1024)
这是我的代码:
x=PyramidROIAlign([pool_size,pool_size])([rois,image_meta]+feature_maps)
print(x.shape)
print(fc_layers_size)
print(pool_size)
x=tf.keras.layers.TimeDistributed(tf.keras.layers.Conv2D(fc_layers_size,(pool_size,pool_size),padding="valid"),
name='mrcnn_class_conv1')(x)
print(x.shape)
结果:
(8,无,7,7,256)
1024
7
(无,无,1、1、1024)
在TimeDistributed之前,所有数据尺寸均相同,并且图层的参数相同,但我不知道结果为何不同。
关于这个问题,有人告诉我这是一个时间步长设置问题,但是我没有在源代码中找到该时间步长设置。
我应该怎么办?请帮助我