def _create_and_connect_agent(self, input_image: MemoryBlock,
                                  input_size: Tuple[int, int, int]):

        params = MultipleLayersParams()
        params.num_conv_layers = 4
        params.n_flocks = [5, 5, 1, 1]
        params.n_cluster_centers = [30, 60, 60, 9]
        params.compute_reconstruction = True
        params.conv_classes = SpConvLayer
        params.sp_buffer_size = 5000
        params.sp_batch_size = 500
        params.learning_rate = 0.1
        params.cluster_boost_threshold = 1000
        params.max_encountered_seqs = 1000
        params.max_frequent_seqs = 500
        params.seq_lookahead = 2
        params.seq_length = 4
        params.exploration_probability = 0
        params.rf_size = (2, 2)
        params.rf_stride = None
        ta_group = NCMGroup(conv_layers_params=params,
                            model_seed=None,
                            image_size=input_size)

        self.add_node(ta_group)

        Connector.connect(input_image, ta_group.inputs.image)
    def _create_and_connect_agent(self, input_image: MemoryBlock,
                                  output_reconstruction: InputSlot,
                                  input_size: Tuple[int, int, int]):

        params = MultipleLayersParams()
        params.num_conv_layers = 3
        params.n_cluster_centers = [28, 14, 7]
        params.compute_reconstruction = True
        params.conv_classes = ConvLayer
        params.sp_buffer_size = 5000
        params.sp_batch_size = 500
        params.learning_rate = 0.2
        params.cluster_boost_threshold = 1000
        params.max_encountered_seqs = 1000
        params.max_frequent_seqs = 500
        params.seq_lookahead = 2
        params.seq_length = 4
        params.exploration_probability = 0
        params.rf_size = [(input_size[0], input_size[1]), (1, 1), (1, 1)]
        params.rf_stride = None
        ta_group = R1NCMGroup(conv_layers_params=params,
                              model_seed=None,
                              image_size=input_size)

        self.add_node(ta_group)

        Connector.connect(input_image, ta_group.inputs.image)

        Connector.connect(ta_group.outputs.predicted_reconstructed_input,
                          output_reconstruction)