Exemplo n.º 1
0
    # initial helper
    helper = Helper()

    # get the dict of users in group
    g_m_d = helper.gen_group_member_dict(config.user_in_group_path)

    # initial dataSet class
    dataset = GDataset(config.user_dataset, config.group_dataset,
                       config.num_negatives)

    # get group number~
    num_group = len(g_m_d)
    num_users, num_items = dataset.num_users, dataset.num_items

    # build AGREE model
    agree = AGREE(num_users, num_items, num_group, config.embedding_size,
                  g_m_d, config.drop_ratio)

    # config information
    print("AGREE at embedding size %d, run Iteration:%d, NDCG and HR at %d" %
          (config.embedding_size, config.epoch, config.topK))
    # train the model
    for epoch in range(config.epoch):
        agree.train()
        # 开始训练时间
        t1 = time()
        training(agree, dataset.get_user_dataloader(config.batch_size), epoch,
                 config, 'user')

        training(agree, dataset.get_group_dataloader(config.batch_size), epoch,
                 config, 'group')
        print("user and group training time is: [%.1f s]" % (time() - t1))
    # initial helper
    helper = Helper()

    # get the dict of users in group
    g_m_d = helper.gen_group_member_dict(args.user_in_group_path)

    # initial dataSet class
    dataset = GDataset(args.user_dataset, args.group_dataset,
                       args.num_negatives, g_m_d)

    # get group number
    num_group = max(g_m_d.keys()) + 1
    num_users, num_items = dataset.num_users, dataset.num_items
    # print('num_users',num_users)
    # build AGREE model
    agree = AGREE(num_users, num_items, num_group, args.embedding_size, g_m_d,
                  args.drop_ratio).to(device)
    # config information
    print("AGREE at embedding size %d, run Iteration:%d" %
          (args.embedding_size, args.epoch))
    history = []
    tops = [5, 10, 15, 20]
    for epoch in range(args.epoch):
        # training
        agree.train()
        t1 = time()
        training(agree, dataset.get_user_dataloader(args.batch_size), epoch,
                 args, 'user')
        training(agree, dataset.get_group_dataloader(128), epoch, args,
                 'group')
        print("user and group training time is: [%.1f s]" % (time() - t1))
        t2 = time()
Exemplo n.º 3
0
    g_m_d = helper.gen_group_member_dict(config.user_in_group_path2)

    # 初始化数据类 在这里可以决定使用哪个数据
    dataset = GDataset(config.user_dataset2, config.group_dataset2,
                       config.num_negatives)

    # 获取群组的数目、训练集中用户的数目、训练集中物品的数目
    num_group = len(g_m_d)
    num_users, num_items = dataset.num_users, dataset.num_items
    print("num_group is: " + str(num_group))
    print("num_users is: " + str(num_users))
    print("num_items is: " + str(num_items))

    # 训练 AGREE 模型
    agree = AGREE(num_users, num_items, num_group, config.num_follow,
                  config.embedding_size, g_m_d, u_f_d,
                  config.drop_ratio).to(device)

    # 打印配置信息
    print("AGREE 的Embedding 维度为: %d, 迭代次数为: %d, NDCG、HR评估选择topK: %d" %
          (config.embedding_size, config.epoch, config.topK))

    # 训练模型
    for epoch in range(config.epoch):
        agree.train()
        # 开始训练时间
        t1 = time()

        for _ in range(config.balance):
            training(agree, dataset.get_group_dataloader(config.batch_size),
                     epoch, config, 'group')
Exemplo n.º 4
0
    return hr, ndcg

if __name__ == '__main__':
    config = Config()
    helper = Helper()

    # get the dict of users in group
    g_m_d = helper.gen_group_member_dict(config.user_in_group_path)
    dataset = GDataset(config.user_dataset, config.group_dataset, config.num_negatives)

    # get group number
    num_group = len(g_m_d)
    num_users, num_items = dataset.num_users, dataset.num_items

    # build AGREE model
    agree = AGREE(num_users, num_items, num_group, config.embedding_size, g_m_d, config.drop_ratio, config.GPU_available)

    # config information
    print("AGREE at embedding size %d, run Iteration:%d, NDCG and HR at %d" %(config.embedding_size, config.epoch, config.topK))
    # train the model
    if config.GPU_available:
        device = torch.device('cuda')
        agree = agree.to(device)

    for epoch in range(config.epoch):
        agree.train()
        training(agree, dataset.get_user_dataloader(config.batch_size), epoch, config, 'user')
        training(agree, dataset.get_group_dataloader(config.batch_size), epoch, config, 'group')

        u_hr, u_ndcg = evaluation(agree, helper, dataset.user_testRatings, dataset.user_testNegatives, config.topK, 'user')
        hr, ndcg = evaluation(agree, helper, dataset.group_testRatings, dataset.group_tyestNegatives, config.topK, 'group')