def testFProp(self, dtype=tf.float32, fprop_dtype=tf.float32):
    with self.session(use_gpu=False):
      tf.random.set_seed(_TF_RANDOM_SEED)
      p = self._testParams()
      p.dtype = dtype
      if fprop_dtype:
        p.fprop_dtype = fprop_dtype
        p.input.dtype = fprop_dtype
      mdl = p.Instantiate()
      dec_metrics, _ = mdl.FPropDefaultTheta()
      self.evaluate(tf.global_variables_initializer())
      vals = []
      print(mdl)
      for _ in range(5):
        vals += [
            self.evaluate(
                (dec_metrics['clean_loss'][0], dec_metrics['other_loss'][0],
                 dec_metrics['mix_loss'][0], dec_metrics['loss'][0]))
        ]

      print('actual vals = %s' % np.array_repr(np.array(vals)))
      self.assertAllClose(
          vals, [[10.373864, 10.371083, 10.372491, 31.11744],
                 [10.36428, 10.379262, 10.366394, 31.109936],
                 [10.369206, 10.372709, 10.369126, 31.111042],
                 [10.363656, 10.364362, 10.362683, 31.090702],
                 [10.371622, 10.374066, 10.371591, 31.11728]],
          rtol=1e-02,
          atol=1e-02)