(self)
| 402 | |
| 403 | # define optimizer and generate train_op |
| 404 | def _create_optimizer(self): |
| 405 | self.global_step = tf.train.get_or_create_global_step() |
| 406 | if self.tf or self._optimizer_type == 'adam': |
| 407 | optimizer = tf.train.AdamOptimizer( |
| 408 | learning_rate=self._learning_rate) |
| 409 | elif self._optimizer_type == 'adamasync': |
| 410 | optimizer = tf.train.AdamAsyncOptimizer( |
| 411 | learning_rate=self._learning_rate) |
| 412 | elif self._optimizer_type == 'adagraddecay': |
| 413 | optimizer = tf.train.AdagradDecayOptimizer( |
| 414 | learning_rate=self._learning_rate, |
| 415 | global_step=self.global_step) |
| 416 | else: |
| 417 | raise ValueError("Optimizer type error.") |
| 418 | |
| 419 | gradients = optimizer.compute_gradients(self.loss) |
| 420 | clipped_gradients = [(tf.clip_by_norm(grad, 5), var) |
| 421 | for grad, var in gradients if grad is not None] |
| 422 | |
| 423 | self.train_op = optimizer.apply_gradients(clipped_gradients, |
| 424 | global_step=self.global_step) |
| 425 | |
| 426 | # compute acc & auc |
| 427 | def _create_metrics(self): |
no test coverage detected