jamesmf / mnistCRNN

Simple TimeDistributed() wrapper Demo in Keras; sums images of MNIST digits
61 stars 24 forks source link

How to deal with the input is a list of tensors using TimeDistributed(model)(input)? #11

Open 491734045 opened 5 years ago

491734045 commented 5 years ago

Hello, If the input is list of tensors, how to use TimeDistributed(model)(input)? Below is my code:

        input_rois = KL.Input(shape=[200, 4], name="rois")
        input_maps_0 = KL.Input(shape=[256, 256, 256], name="maps_0")
        input_maps_1 = KL.Input(shape=[128, 128, 256], name="maps_1")
        input_maps_2 = KL.Input(shape=[64, 64, 256], name="maps_2")
        input_maps_3 = KL.Input(shape=[32, 32, 256], name="maps_3")
        input_image_meta_ = KL.Input(shape=[config.IMAGE_META_SIZE],
                                name="input_image_meta")

        mrcnn_class_logits_, mrcnn_class_, mrcnn_bbox_ =\
                fpn_classifier_graph(input_rois, input_maps_0, input_maps_1,
                                     input_maps_2, input_maps_3,
                                     input_image_meta_)

        inputs = [input_rois, input_maps_0, input_maps_1,
                  input_maps_2, input_maps_3, input_image_meta_]
        outputs = [mrcnn_class_logits_, mrcnn_class_, mrcnn_bbox_]
        fpn_model = KM.Model(inputs, outputs, name='fpn_classifier')

        rois = KL.Input(shape=[5, 200, 4], name="rois_")
        mrcnn_feature_maps_0 = KL.Input(shape=[5, 256, 256, 256], name="maps_0_")
        mrcnn_feature_maps_1 = KL.Input(shape=[5, 128, 128, 256], name="maps_1_")
        mrcnn_feature_maps_2 = KL.Input(shape=[5, 64, 64, 256], name="maps_2_")
        mrcnn_feature_maps_3 = KL.Input(shape=[5, 32, 32, 256], name="maps_3_")
        input_image_meta = KL.Input(shape=[5, config.IMAGE_META_SIZE],
                                name="input_image_meta_")
        x, y, z = TimeDistributed(fpn_model)([rois, mrcnn_feature_maps_0,
                                       mrcnn_feature_maps_1, mrcnn_feature_maps_2,
                                       mrcnn_feature_maps_3, input_image_meta])

The error is as below: Traceback (most recent call last): File "linemod_rcnn.py", line 189, in model_dir=MODEL_DIR) File "/home/tdq/Documents/Mask-RCNN/Mask_RCNN-master/mrcnn/model_pose_rcnn.py", line 2060, in init self.keras_model = self.build(mode=mode, config=config) File "/home/tdq/Documents/Mask-RCNN/Mask_RCNN-master/mrcnn/model_pose_rcnn.py", line 2336, in build mrcnn_feature_maps[3], input_image_meta]) File "/usr/local/lib/python3.4/dist-packages/keras/engine/topology.py", line 577, in call self.build(input_shapes) File "/usr/local/lib/python3.4/dist-packages/keras/layers/wrappers.py", line 156, in build child_input_shape = (input_shape[0],) + input_shape[2:] TypeError: can only concatenate tuple (not "list") to tuple