(self)
| 568 | |
| 569 | # define optimizer and generate train_op |
| 570 | def _create_optimizer(self): |
| 571 | self.global_step = tf.train.get_or_create_global_step() |
| 572 | if self.tf or self._optimizer_type == 'adam': |
| 573 | optimizer = tf.train.AdamOptimizer( |
| 574 | learning_rate=self._learning_rate) |
| 575 | elif self._optimizer_type == 'adamasync': |
| 576 | optimizer = tf.train.AdamAsyncOptimizer( |
| 577 | learning_rate=self._learning_rate) |
| 578 | elif self._optimizer_type == 'adagraddecay': |
| 579 | optimizer = tf.train.AdagradDecayOptimizer( |
| 580 | learning_rate=self._learning_rate, |
| 581 | global_step=self.global_step) |
| 582 | else: |
| 583 | raise ValueError("Optimizer type error.") |
| 584 | |
| 585 | gradients = optimizer.compute_gradients(self.loss) |
| 586 | clipped_gradients = [(tf.clip_by_norm(grad, 5), var) |
| 587 | for grad, var in gradients if grad is not None] |
| 588 | |
| 589 | self.train_op = optimizer.apply_gradients(clipped_gradients, |
| 590 | global_step=self.global_step) |
| 591 | |
| 592 | # compute acc & auc |
| 593 | def _create_metrics(self): |
no test coverage detected