# import tensorflow._api.v2.compat.v1 as tf # tf.disable_v2_behavior() import tensorflow as tf class LINEModel: def __init__(self, args): self.u_i = tf.placeholder(name='u_i', dtype=tf.int32, shape=[args.batch_size * (args.K + 1)]) self.u_j = tf.placeholder(name='u_j', dtype=tf.int32, shape=[args.batch_size * (args.K + 1)]) self.label = tf.placeholder(name='label', dtype=tf.float32, shape=[args.batch_size * (args.K + 1)]) #with tf.variable_scope(name_or_scope='', reuse=tf.AUTO_REUSE): self.embedding = tf.get_variable('target_embedding_%s%s'%(args.uid, args.flag), [args.num_of_nodes, args.embedding_dim], initializer=tf.random_uniform_initializer(minval=-1., maxval=1.)) self.u_i_embedding = tf.matmul(tf.one_hot(self.u_i, depth=args.num_of_nodes), self.embedding) if args.proximity == 'first-order': self.u_j_embedding = tf.matmul(tf.one_hot(self.u_j, depth=args.num_of_nodes), self.embedding) elif args.proximity == 'second-order': self.context_embedding = tf.get_variable('context_embedding_%s%s'%(args.uid, args.flag), [args.num_of_nodes, args.embedding_dim], initializer=tf.random_uniform_initializer(minval=-1., maxval=1.)) self.u_j_embedding = tf.matmul(tf.one_hot(self.u_j, depth=args.num_of_nodes), self.context_embedding) self.inner_product = tf.reduce_sum(self.u_i_embedding * self.u_j_embedding, axis=1) self.loss = -tf.reduce_mean(tf.log_sigmoid(self.label * self.inner_product)) self.learning_rate = tf.placeholder(name='learning_rate', dtype=tf.float32) # self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.learning_rate) self.optimizer = tf.train.RMSPropOptimizer(learning_rate=self.learning_rate) self.train_op = self.optimizer.minimize(self.loss) self.variables_list=tf.trainable_variables() self.gradients_list = tf.gradients(self.loss, self.variables_list) class LINEModel1: def __init__(self, args): self.u_i = tf.placeholder(name='u_i', dtype=tf.int32, shape=[args.batch_size * (args.K + 1)]) self.u_j = tf.placeholder(name='u_j', dtype=tf.int32, shape=[args.batch_size * (args.K + 1)]) self.label = tf.placeholder(name='label', dtype=tf.float32, shape=[args.batch_size * (args.K + 1)]) #with tf.variable_scope(name_or_scope='', reuse=tf.AUTO_REUSE): self.embedding = tf.get_variable('target_embedding_%s%s'%(args.uid, args.flag), [args.num_of_nodes, args.embedding_dim], initializer=tf.random_uniform_initializer(minval=-1., maxval=1.)) self.u_i_embedding = tf.matmul(tf.one_hot(self.u_i, depth=args.num_of_nodes), self.embedding) if args.proximity == 'first-order': self.u_j_embedding = tf.matmul(tf.one_hot(self.u_j, depth=args.num_of_nodes), self.embedding) elif args.proximity == 'second-order': self.context_embedding = tf.get_variable('context_embedding_%s%s'%(args.uid, args.flag), [args.num_of_nodes, args.embedding_dim], initializer=tf.random_uniform_initializer(minval=-1., maxval=1.)) self.u_j_embedding = tf.matmul(tf.one_hot(self.u_j, depth=args.num_of_nodes), self.context_embedding) self.inner_product = tf.reduce_sum(self.u_i_embedding * self.u_j_embedding, axis=1) self.loss = -tf.reduce_mean(tf.log_sigmoid(self.label * self.inner_product)) self.learning_rate = tf.placeholder(name='learning_rate', dtype=tf.float32) # self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.learning_rate) self.optimizer = tf.train.RMSPropOptimizer(learning_rate=self.learning_rate) self.train_op = self.optimizer.minimize(self.loss) self.variables_list=tf.trainable_variables() self.gradients_list = tf.gradients(self.loss, self.variables_list)