(self)
| 287 | |
| 288 | # define optimizer and generate train_op |
| 289 | def _create_optimizer(self): |
| 290 | self.global_step = tf.train.get_or_create_global_step() |
| 291 | if self.tf or self._optimizer_type == 'adam': |
| 292 | dnn_optimizer = tf.train.AdamOptimizer( |
| 293 | learning_rate=self._deep_learning_rate, |
| 294 | beta1=0.9, |
| 295 | beta2=0.999, |
| 296 | epsilon=1e-8) |
| 297 | cross_optimizer = tf.train.AdamOptimizer( |
| 298 | learning_rate=self._cross_learning_rate, |
| 299 | beta1=0.9, |
| 300 | beta2=0.999, |
| 301 | epsilon=1e-8) |
| 302 | elif self._optimizer_type == 'adagrad': |
| 303 | dnn_optimizer = tf.train.AdagradOptimizer( |
| 304 | learning_rate=self._deep_learning_rate, |
| 305 | initial_accumulator_value=0.1, |
| 306 | use_locking=False) |
| 307 | cross_optimizer = tf.train.AdagradOptimizer( |
| 308 | learning_rate=self._cross_learning_rate, |
| 309 | initial_accumulator_value=0.1, |
| 310 | use_locking=False) |
| 311 | elif self._optimizer_type == 'adamasync': |
| 312 | dnn_optimizer = tf.train.AdamAsyncOptimizer( |
| 313 | learning_rate=self._deep_learning_rate, |
| 314 | beta1=0.9, |
| 315 | beta2=0.999, |
| 316 | epsilon=1e-8) |
| 317 | cross_optimizer = tf.train.AdamAsyncOptimizer( |
| 318 | learning_rate=self._cross_learning_rate, |
| 319 | beta1=0.9, |
| 320 | beta2=0.999, |
| 321 | epsilon=1e-8) |
| 322 | elif self._optimizer_type == 'adagraddecay': |
| 323 | dnn_optimizer = tf.train.AdagradDecayOptimizer( |
| 324 | learning_rate=self._deep_learning_rate, |
| 325 | global_step=self.global_step) |
| 326 | cross_optimizer = tf.train.AdagradDecayOptimizer( |
| 327 | learning_rate=self._cross_learning_rate, |
| 328 | global_step=self.global_step) |
| 329 | else: |
| 330 | raise ValueError("Optimizer type error.") |
| 331 | |
| 332 | train_ops = [] |
| 333 | update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) |
| 334 | with tf.control_dependencies(update_ops): |
| 335 | train_ops.append( |
| 336 | dnn_optimizer.minimize(self.loss, |
| 337 | var_list=tf.get_collection( |
| 338 | tf.GraphKeys.TRAINABLE_VARIABLES, |
| 339 | scope='dnn'), |
| 340 | global_step=self.global_step)) |
| 341 | train_ops.append( |
| 342 | cross_optimizer.minimize(self.loss, |
| 343 | var_list=tf.get_collection( |
| 344 | tf.GraphKeys.TRAINABLE_VARIABLES, |
| 345 | scope='cross'))) |
| 346 | self.train_op = tf.group(*train_ops) |
no test coverage detected