def test_model()

in question_generation_model.py [0:0]


    def test_model(self, test_image_url, model, decoder_algorithm, beam_size, keyword=None):
        """
        Function to perform inference on model
        :param test_image_url: Test image url
        :param model: Model definition file
        :param decoder_algorithm: Decoder algorithm: Greedy, simple beam search or diverse beam search
        :param beam_size: Beam size to be used for decoding
        :param keyword: Keyword to be used for some model architecture
        :return:
        """

        response = requests.get(test_image_url)
        test_image_content = Image.open(BytesIO(response.content))
        test_image_content = test_image_content.resize((224, 224))
        self.logger.debug('Extracting image feature')
        try:
            test_image_feature = self.datasets.extract_features_from_image(test_image_content)
        except:
            self.logger.error('Error in extracting image feature')
            test_image_content = test_image_content.convert('RGB')
            test_image_feature = self.datasets.extract_features_from_image(test_image_content)

        self.logger.debug('Succesfully extracted image feature')
        test_image_feature = test_image_feature.reshape((1, self.input_shape))

        if keyword is not None:
            keyword_token_seq = [self.datasets.word_to_idx[word] for word in keyword.split(' ') if
                                 word in self.datasets.word_to_idx]
            keyword = pad_sequences([keyword_token_seq], maxlen=self.datasets.max_keyword_len, padding='post')[0]
            keyword = array([keyword])

        output = None

        if decoder_algorithm == 'sbs':
            self.logger.info('Simple beam search ---->')
            output, candidates = self.beam_search(test_image_feature, model, beam_size)
        elif decoder_algorithm == 'dbs':
            try:
                self.logger.info('Diverse beam search ---->')
                output, candidates = self.diverse_beam_search(test_image_feature, model, beam_size, num_groups=2)
            except:
                self.logger.error('Failed to perform diverse beam search')
        elif decoder_algorithm == 'greedy':
            self.logger.info('Greedy search ---->')
            output = self.greedy_search(test_image_feature, model, keyword)
            #
            # Perform all 3 below
            #
            # self.logger.info('Simple beam search ---->')
            # output, candidates = self.beam_search(test_image_feature, model, beam_size, keyword)
            # self.logger.info('Diverse beam search ---->')
            # output, candidates = self.diverse_beam_search(test_image_feature, model, beam_size, num_groups=2, keyword=keyword)

        self.logger.info('Final Output:  ---->%s', output)
        self.logger.info('\n')
        return output