def build_graph(self): self._create_variable() with tf.name_scope("inference"): self.ua_embeddings, self.ia_embeddings, self.ua_embeddings_sub1, self.ia_embeddings_sub1, self.ua_embeddings_sub2, self.ia_embeddings_sub2 = self._create_lightgcn_SSL_embed( ) """ ********************************************************* Generate Predictions & Optimize via BPR loss. """ with tf.name_scope("loss"): if self.pretrain: self.ssl_loss = tf.constant(0, dtype=tf.float32) else: if self.ssl_mode in ['user_side', 'item_side', 'both_side']: # self.ssl_loss = self.calc_ssl_loss() self.ssl_loss = self.calc_ssl_loss_v2() elif self.ssl_mode in ['merge']: self.ssl_loss = self.calc_ssl_loss_v3() else: raise ValueError("Invalid ssl_mode!") self.sl_loss, self.emb_loss = self.create_bpr_loss() self.loss = self.sl_loss + self.emb_loss + self.ssl_loss with tf.name_scope("learner"): # self.opt = tf.train.AdamOptimizer(learning_rate=self.lr).minimize(self.loss) self.opt = learner.optimizer(self.learner, self.loss, self.lr) self.saver = tf.train.Saver()
def _create_optimizer(self): with tf.name_scope("learner"): self.optimizer = learner.optimizer(self.learner, self.loss, self.learning_rate)
#!/usr/local/bin/python