コード例 #1
0
  def test_regularization_mixed(self):
    n_samples = 3
    n_hid = 2
    scale_init = 1e-4
    wd = 1e-4
    X = np.ones((n_samples, n_hid)) / n_hid
    y = np.ones((n_samples, 1)) * scale_init

    dtype = tf.float16
    # pylint: disable=no-member
    regularizer = mp_regularizer_wrapper(tf.contrib.layers.l2_regularizer(wd))

    with tf.Graph().as_default() as g:
      x_ph = tf.placeholder(dtype, [n_samples, n_hid])
      y_ph = tf.placeholder(dtype, [n_samples, 1])

      y_pred = tf.layers.dense(
          x_ph, 1, kernel_regularizer=regularizer,
          use_bias=False,
          kernel_initializer=tf.constant_initializer(scale_init, dtype=dtype),
      )
      loss = tf.reduce_mean((y_ph - y_pred) ** 2)
      reg_loss = tf.losses.get_regularization_loss()
      loss += tf.cast(reg_loss, loss.dtype)
      opt = MixedPrecisionOptimizerWrapper(tf.train.AdamOptimizer())
      grad = opt.compute_gradients(loss)[0][0]

      with self.test_session(g, use_gpu=True) as sess:
        sess.run(tf.global_variables_initializer())
        reg_loss_val, grad_val = sess.run([reg_loss, grad],
                                          {x_ph: X, y_ph: y})

    self.assertAlmostEqual(reg_loss_val, 0.0)
    self.assertEqual(reg_loss.name, "Const_1:0")
    npt.assert_allclose(grad_val, np.ones((2, 1)) * 1e-8, atol=1e-11)
コード例 #2
0
ファイル: lm_encoders.py プロジェクト: USC-NSL/OpenSeq2Seq
    def encode(self, input_dict):
        """Wrapper around :meth:`self._encode() <_encode>` method.
    Here name, initializer and dtype are set in the variable scope and then
    :meth:`self._encode() <_encode>` method is called.

    Args:
      input_dict (dict): see :meth:`self._encode() <_encode>` docs.

    Returns:
      see :meth:`self._encode() <_encode>` docs.
    """

        if not self._compiled:
            if 'regularizer' not in self._params:
                if self._model and 'regularizer' in self._model.params:
                    self._params['regularizer'] = copy.deepcopy(
                        self._model.params['regularizer'])
                    self._params['regularizer_params'] = copy.deepcopy(
                        self._model.params['regularizer_params'])

            if 'regularizer' in self._params:
                init_dict = self._params.get('regularizer_params', {})
                self._params['regularizer'] = self._params['regularizer'](
                    **init_dict)
                if self._params['dtype'] == 'mixed':
                    self._params['regularizer'] = mp_regularizer_wrapper(
                        self._params['regularizer'], )

            if self._params['dtype'] == 'mixed':
                self._params['dtype'] = tf.float16

        self._compiled = True

        with tf.variable_scope(self._name, dtype=self.params['dtype']):
            return self._encode(self._cast_types(input_dict))