def _init_ops(self):
# Loss
reconstruction_loss = tf.reduce_sum(tf.square(tf.sub(self.r_target, self.r)), reduction_indices=[0])
reg = tf.add_n([tf.reduce_sum(tf.square(self.Uprime), reduction_indices=[0,1]),
tf.reduce_sum(tf.square(self.U), reduction_indices=[0,1]),
tf.reduce_sum(tf.square(self.V), reduction_indices=[0,1]),
tf.reduce_sum(tf.square(self.Vprime), reduction_indices=[0,1])])
self.loss = reconstruction_loss + (self.lam*reg)
# Optimizer
self.optimizer = tf.train.AdamOptimizer()
# Optimize the MLP weights
f_train_step = self.optimizer.minimize(self.loss, var_list=self.mlp_weights.values())
# Then optimize the latents
latent_train_step = self.optimizer.minimize(self.loss, var_list=[self.U, self.Uprime, self.V, self.Vprime])
self.optimize_steps = [f_train_step, latent_train_step]
评论列表
文章目录