def worker_init_fn(worker_id): np.random.seed(2019 + worker_id) data_path = '../data/{}/'.format(args.dataset) model_path = './models/{}/'.format(args.dataset) print("arguments: %s " %(args)) print("config model", args.model) print("config data path", data_path) print("config model path", model_path) ############################## PREPARE DATASET ########################## train_data, valid_data, test_data_pos, user_pos, user_num ,item_num, train_mat, train_data_noisy = data_utils.load_all(args.dataset, data_path) # construct the train and test datasets train_dataset = data_utils.NCFData( train_data, item_num, train_mat, args.num_ng, 0, train_data_noisy) valid_dataset = data_utils.NCFData( valid_data, item_num, train_mat, args.num_ng, 1) train_loader = data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, worker_init_fn=worker_init_fn) valid_loader = data.DataLoader(valid_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, worker_init_fn=worker_init_fn) print("data loaded! user_num:{}, item_num:{} train_data_len:{} test_user_num:{}".format(user_num, item_num, len(train_data), len(test_data_pos))) ########################### CREATE MODEL ################################# if args.model == 'NeuMF-pre': # pre-training. Not used in our work. GMF_model_path = model_path + 'GMF.pth' MLP_model_path = model_path + 'MLP.pth' NeuMF_model_path = model_path + 'NeuMF.pth'
parser.add_argument("--test_num_ng", type=int, default=99, help="sample part of negative items for testing") parser.add_argument("--out", default=True, help="save model or not") parser.add_argument("--gpu", default="0", help="gpu card ID") args = parser.parse_args() os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu cudnn.benchmark = True # PREPARE DATASET train_data, test_data, user_num, item_num, train_mat = data_utils.load() # construct the train and test datasets train_dataset = data_utils.NCFData(train_data, item_num, train_mat, args.num_ng, True) test_dataset = data_utils.NCFData(test_data, item_num, train_mat, 0, False) train_loader = data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) test_loader = data.DataLoader(test_dataset, batch_size=args.test_num_ng + 1, shuffle=False, num_workers=0) # CREATE MODEL if config.model == 'NeuMF-pre': assert os.path.exists(config.GMF_model_path), 'lack of GMF model' assert os.path.exists(config.MLP_model_path), 'lack of MLP model' GMF_model = torch.load(config.GMF_model_path)
os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu cudnn.benchmark = True data_path = '../data/{}/'.format(args.dataset) model_path = './models/{}/'.format(args.dataset) print("arguments: %s " % (args)) print("config model", args.model) print("config data path", data_path) print("config model path", model_path) ############################## PREPARE DATASET ########################## train_data, test_data, user_num, item_num, train_mat, user_neg = data_utils.load_all( args.dataset, data_path) test_dataset = data_utils.NCFData(test_data, item_num, train_mat, user_neg, False, 0, False) test_loader = data.DataLoader(test_dataset, batch_size=args.test_num_ng + 1, shuffle=False, num_workers=0) print("data loaded! user_num:{}, item_num:{} test_data_len:{}".format( user_num, item_num, len(test_data) // (args.test_num_ng + 1))) ########################### CREATE MODEL ################################# test_model = torch.load('{}{}_{}.pth'.format(model_path, args.model, args.alpha)) test_model.cuda() def test(model, test_data_pos, user_pos):