示例#1
0
                                       batch_size=parameters['batch_size'],
                                       shuffle=True)

    val_pos_loader = data.DataLoader(torch.Tensor(
        np.array(kg.get_data_by_type('val'))),
                                     batch_size=parameters['batch_size'],
                                     shuffle=False)

    test_pos_loader = data.DataLoader(torch.Tensor(
        np.array(kg.get_data_by_type('test'))),
                                      batch_size=parameters['batch_size'],
                                      shuffle=False)

    # Neg samplers
    train_neg_sampler = RandomNegativeSampler(
        kg.get_num_of_ent("train"),
        kg.get_num_of_ent('train'),
        neg_per_pos=parameters['num_of_neg_samples'])

    if args.random_val_neg_sampler:
        val_neg_sampler = RandomNegativeSampler(
            kg.get_num_of_ent("val"),
            kg.get_num_of_ent('val'),
            neg_per_pos=parameters['num_of_neg_samples'])
    else:
        val_neg_sampler = HonestNegativeSampler(kg.get_num_of_ent("val"),
                                                kg.get_num_of_ent('val'),
                                                kg.df_drug,
                                                neg_per_pos=1)

    test_neg_sampler = HonestNegativeSampler(kg.get_num_of_ent("test"),
示例#2
0
    parameters['regularization'] = args.regularization
    parameters['use_proteins'] = args.use_proteins
    parameters['reversed'] = args.reversed
    parameters['metrics_separately'] = args.metrics_separately
    parameters['random_val_neg_sampler'] = args.random_val_neg_sampler
    parameters['val_regenerate'] = args.val_regenerate

    use_cuda = args.gpu and torch.cuda.is_available()
    device = torch.device("cuda" if args.gpu else "cpu")
    print(f'Use device: {device}')

    kg = KnowledgeGraph(data_path=DATA_CONST['work_dir'],
                        use_proteins=args.use_proteins,
                        use_proteins_on_validation=False,
                        use_reversed_edges=args.reversed)
    model = TriVec(ent_total=kg.get_num_of_ent('train'),
                   rel_total=kg.get_num_of_rel('train'))
    model = model.to(device)
    loss_func = NegativeSoftPlusLoss()
    print('Test')
    checkpoint = torch.load(args.model_path)
    model.load_state_dict(checkpoint['model_state_dict'])

    switch_grad_mode(model, requires_grad=False)
    switch_model_mode(model, train=False)
    model.eval()

    test_trivec_model('seen')
    print("===========================")
    test_trivec_model('new')