コード例 #1
0
ファイル: main.py プロジェクト: ppoak/DANE
def main():
    dataset, learning_rate, epoch, alpha, beta, gamma, pretrain_epoch = parse_argument(
    )
    random.seed(9001)

    dataset_config = {
        'feature_file': './Database/' + dataset + '/features.txt',
        'graph_file': './Database/' + dataset + '/edges.txt',
        'walks_file': './Database/' + dataset + '/walks.txt',
        'label_file': './Database/' + dataset + '/group.txt'
    }
    graph = Dataset(dataset_config)

    pretrain_config = {
        'net_shape': [6, 1],
        'att_shape': [1],
        'net_input_dim': graph.num_nodes,
        'att_input_dim': graph.num_feas,
        'pretrain_params_path': './Log/' + dataset + '/pretrain_params.pkl'
    }

    model_config = {
        'net_shape': [6, 1],
        'att_shape': [1],
        'net_input_dim': graph.num_nodes,
        'att_input_dim': graph.num_feas,
        'is_init': True,
        'pretrain_params_path': './Log/' + dataset + '/pretrain_params.pkl'
    }

    trainer_config = {
        'net_shape': [6, 1],
        'att_shape': [1],
        'net_input_dim': graph.num_nodes,
        'att_input_dim': graph.num_feas,
        'drop_prob': 0.2,
        'learning_rate': learning_rate,
        'batch_size': 100,
        'num_epochs': epoch,
        'beta': beta,
        'alpha': alpha,
        'gamma': gamma,
        'model_path': './Log/' + dataset + '/test_model.pkl',
    }

    print("=" * 30 + "开始进行参数预训练" + "=" * 30)
    pretrainer = PreTrainer(pretrain_config)
    pretrainer.pretrain(graph.X, 'net', pretrain_epoch)  # walks.txt的矩阵
    pretrainer.pretrain(graph.Z, 'att', pretrain_epoch)

    model = Model(model_config)
    trainer = Trainer(model, trainer_config)
    trainer.train(graph)
    train_emb = trainer.infer(graph)
    train_emb = np.array(train_emb)
    with open("./Log/" + dataset + "/train_emb.txt", 'w') as f:
        np.savetxt(f, train_emb)
コード例 #2
0
ファイル: script_cora.py プロジェクト: xdlequ/DANE
        'att_shape': [200, 100],
        'net_input_dim': graph.num_nodes,
        'att_input_dim': graph.num_feas,
        'is_init': True,
        'pretrain_params_path': './Log/cora/pretrain_params.pkl'
    }

    trainer_config = {
        'net_shape': [200, 100],
        'att_shape': [200, 100],
        'net_input_dim': graph.num_nodes,
        'att_input_dim': graph.num_feas,
        'drop_prob': 0.2,
        'learning_rate': 1e-5,
        'batch_size': 100,
        'num_epochs': 500,
        'beta': 100,
        'alpha': 50,
        'gamma': 500,
        'model_path': './Log/cora/cora_model.pkl',
    }

    pretrainer = PreTrainer(pretrain_config)
    pretrainer.pretrain(graph.X, 'net')
    pretrainer.pretrain(graph.Z, 'att')

    model = Model(model_config)
    trainer = Trainer(model, trainer_config)
    trainer.train(graph)
    trainer.infer(graph)