docs: def _get_optimizer(self):
          """Uses Adagrad to optimize the GloVe/Mittens objective,
          as specified in the GloVe paper.
          """
          optim = tf.train.AdagradOptimizer(self.learning_rate)
          gradients = optim.compute_gradients(self.cost)
          if self.log_dir:
              for name, (g, v) in zip(['W', 'C', 'bw', 'bc'], gradients):
                  tf.summary.histogram("{}_grad".format(name), g)
                  tf.summary.histogram("{}_vals".format(name), v)
          return optim.apply_gradients(gradients)