예제 #1
0
파일: AFM.py 프로젝트: russellkim/HHFM
    def __init__(self, args):
        self.args = args
        self.batch_size = args.batch_size
        self.epoch = args.epoch
        self.verbose = args.verbose
        self.keep = args.keep
        self.TopK = args.TopK

        # Data loading
        self.data = DATA.LoadData(self.args.path, self.args.dataset)  #获取数据
        self.n_user = self.data.n_user
        self.n_item = self.data.n_item
        self.valid_dimension = self.data.Train_data.shape[1] - 1
        if args.verbose > 0:
            print(
                "AFM: dataset=%s, factors=%s, #epoch=%d, batch=%d, lr=%.4f, lamda_attention=%.1e, keep=%s, optimizer=%s, batch_norm=%d"
                % (args.dataset, args.hidden_factor, args.epoch,
                   args.batch_size, args.lr, args.lamda_attention, args.keep,
                   args.optimizer, args.batch_norm))
        activation_function = tf.nn.relu
        if args.activation == 'sigmoid':
            activation_function = tf.sigmoid
        elif args.activation == 'tanh':
            activation_function == tf.tanh
        elif args.activation == 'identity':
            activation_function = tf.identity

    # Training\\
        self.model = AFM(self.n_user, self.n_item, self.data.features_M,
                         args.attention, eval(args.hidden_factor),
                         activation_function, args.lr, args.lamda_attention,
                         eval(args.keep), args.optimizer, args.decay,
                         self.valid_dimension)
예제 #2
0
    def __init__(self, args):
        self.args = args
        self.batch_size = args.batch_size
        self.epoch = args.epoch
        self.verbose = args.verbose
        self.keep = args.keep
        self.TopK = args.TopK

        # Data loading
        self.data = DATA.LoadData(self.args.path, self.args.dataset)  #获取数据
        self.n_user = self.data.n_user
        self.n_item = self.data.n_item
        self.valid_dimension = self.data.Train_data.shape[1] - 1
        if args.verbose > 0:
            print(
                "FM: dataset=%s, factors=%d, #epoch=%d, batch=%d, lr=%.4f, lambda=%.1e, keep=%.2f, optimizer=%s, batch_norm=%d"
                % (args.dataset, args.hidden_factor, args.epoch,
                   args.batch_size, args.lr, args.lamda, args.keep,
                   args.optimizer, args.batch_norm))

    # Training\\\

        self.model = FM(self.valid_dimension, self.data.features_M,
                        self.n_user, self.n_item, args.hidden_factor, args.lr,
                        args.lamda, args.keep, args.optimizer, args.batch_norm,
                        args.verbose)
예제 #3
0
파일: MF.py 프로젝트: russellkim/HHFM
    def __init__(self,args):
        self.args = args
        self.batch_size = args.batch_size
        self.epoch = args.epoch
        self.verbose = args.verbose
        self.keep = args.keep


    # Data loading
        self.data = DATA.LoadData(self.args.path, self.args.dataset)#获取数据
        self.n_user = self.data.n_user
        self.n_item = self.data.n_item
        if args.verbose > 0:
            print("FM: dataset=%s, factors=%d, #epoch=%d, batch=%d, lr=%.4f, lambda=%.1e, keep=%.2f, optimizer=%s, batch_norm=%d"
                  %(args.dataset, args.hidden_factor, args.epoch, args.batch_size, args.lr, args.lamda, args.keep, args.optimizer, args.batch_norm))

    # Training\\\

        self.model = MF(self.n_user+self.n_item, self.n_user, self.n_item , args.hidden_factor,args.lr, args.lamda, args.keep, args.optimizer, args.batch_norm, args.verbose)
예제 #4
0
    def __init__(self,args):
        self.args = args
        self.batch_size = args.batch_size
        self.epoch = args.epoch
        self.TopK = args.TopK

    # Data loading
        self.data = DATA.LoadData(self.args.path, self.args.dataset)#获取数据
        self.n_user = self.data.n_user
        self.n_item = self.data.n_item
        self.features_M = self.data.features_M
        self.valid_dimension = self.data.Train_data.shape[1] - 1
        print("OurModel: dataset=%s, factors=%d, #epoch=%d, batch=%d, lr=%.4f, lambda=%.1e, keep=%.2f, optimizer=%s, batch_norm=%d"
              %(args.dataset, args.hidden_factor, args.epoch, args.batch_size, args.lr, args.lamda, args.keep, args.optimizer, args.batch_norm))

    # Training\\\建立模型
        if args.dataset =='resturant':  #contextual + time
            self.context = True
            self.time = True
            self.time_dimension = 5
            self.feature_dimension= self.valid_dimension - 2 - self.time_dimension
        if args.dataset == 'tmall':
            self.context = True
            self.time = False
            self.time_dimension = 0
            self.feature_dimension= self.valid_dimension - 2 - self.time_dimension            
            
        if args.dataset =='frappe' or args.dataset =='fra':
            self.context = True
            self.time = False
            self.feature_dimension= self.valid_dimension - 2 
            self.time_dimension = 0
        if args.dataset =='jiaju':
            self.context = True
            self.time = True
            self.time_dimension = 3
            self.feature_dimension= self.valid_dimension - 2  - self.time_dimension 
        self.model = OUR(self.feature_dimension,self.time_dimension,self.features_M, self.n_user, self.n_item , args.hidden_factor,args.lr, args.lamda, args.optimizer, self.context, self.time)
예제 #5
0
    def __init__(self, args):
        self.args = args
        self.batch_size = args.batch_size
        self.epoch = args.epoch
        self.TopK = args.TopK

        # Data loading
        self.data = DATA.LoadData(self.args.path, self.args.dataset)  #获取数据
        self.n_user = self.data.n_user
        self.n_item = self.data.n_item
        set1 = set()
        for line in self.data.Total_data.values[:, 3:]:
            set1.add(tuple(line))
        self.feature_inject = {f: i for i, f in enumerate(set1)}
        self.features_M = len(self.feature_inject.keys())
        print(
            "OurModel: dataset=%s, factors=%d, #epoch=%d, batch=%d, lr=%.4f, lambda=%.1e, keep=%.2f, optimizer=%s, batch_norm=%d"
            %
            (args.dataset, args.hidden_factor, args.epoch, args.batch_size,
             args.lr, args.lamda, args.keep, args.optimizer, args.batch_norm))

        self.model = CARS2(self.features_M, self.n_user, self.n_item,
                           args.hidden_factor, args.lr, args.lamda,
                           args.optimizer)