Beispiel #1
0
    def __init__(self, hyper_params):
        # Basic configuration
        self.model_tag = hyper_params['model_tag']

        # Specify network type and construct the model
        if not self.model_tag.lower() in ['sentence_extractor', 'se', 's_e']:
            raise ValueError('Unrecognized model tag: %s' % self.model_tag)

        network_params = hyper_params[self.model_tag]
        if self.model_tag.lower() in ['sentence_extractor', 'se', 's_e']:
            self.model_tag = 'sentence extractor'
            self.model = sentence_extractor.sentence_extractor(network_params)
        else:
            raise Exception('Failed to construct the network, model_tag: %s' %
                            self.model_tag)

        # Load the weight for network
        model2load = hyper_params['model2load']
        self.model.train_validate_test_init()
        self.model.load_params(model2load)

        # Load the data_generator
        data_generator_params = hyper_params['data_generator_params']
        word_file = hyper_params['word_file']
        entity_file = hyper_params['entity_file']
        format = hyper_params['format'] if 'format' in hyper_params else None
        self.generator = data_generator.data_generator(data_generator_params)
        self.generator.load(word_file, entity_file, format)

        # Other configurations
        self.folder2store = hyper_params['folder2store']
        if os.path.exists(self.folder2store):
            raise ValueError(
                'Can not use a existing folder to store temporary files: %s' %
                self.folder2store)
        os.makedirs(self.folder2store)
        self.n_top = hyper_params['n_top'] if 'n_top' in hyper_params else 5
        print('A solver based on model %s already constructed' %
              self.model_tag)
network_params=hyper_params['network_params']
se_model_params=network_params['se_model_params']
input_extend_tags=network_params['input_extend_tags'] if 'input_extend_tags' in network_params else []
model2load=network_params['model2load']

assert(se_model_params['sequence_length']==my_data_generator.sentence_length_threshold)
assert(se_model_params['sequence_num']==my_data_generator.document_length_threshold)
if my_data_generator.enable_entity_bit==False:
    assert(se_model_params['vocab_size']==my_data_generator.word_list_length+2)
else:
    assert(se_model_params['vocab_size']==my_data_generator.word_list_length+my_data_generator.entity_list_length+3)
assert(se_model_params['embedding_dim']==my_embedding_loader.embedding_dim)
if 'pretrain_embedding' in network_params and network_params['pretrain_embedding']==True:
    se_model_params['embedding_matrix']=embedding_matrix

my_network=sentence_extractor.sentence_extractor(se_model_params)

test_case_num=0
test_right_num=0
positive_num=0
negative_num=0
my_network.train_validate_test_init()
my_network.load_params(model2load)
while True:
    input_matrix,masks,labels,stop,extend_part=my_data_generator.batch_gen(
        set_label='test',batch_size=my_network.batch_size,label_policy='min',extend_tags=input_extend_tags)

    predictions=my_network.test(inputs=input_matrix,masks=masks,extend_part=extend_part)
    masks=np.array(masks).reshape(-1)
    labels=np.array(labels).reshape(-1)
    predictions=np.array(predictions).reshape(-1)