コード例 #1
0
 def quantize_and_dequantize_v2_round_half_to_even(x):
   return array_ops.quantize_and_dequantize_v2(
       x,
       -1.0,
       1.0,
       signed_input=True,
       num_bits=8,
       range_given=True,
       round_mode="HALF_TO_EVEN")
コード例 #2
0
ファイル: unary_ops_test.py プロジェクト: jackd/tensorflow
 def quantize_and_dequantize_v2_round_half_to_even(x):
   return array_ops.quantize_and_dequantize_v2(
       x,
       -1.0,
       1.0,
       signed_input=True,
       num_bits=8,
       range_given=True,
       round_mode="HALF_TO_EVEN")
コード例 #3
0
 def quantize_and_dequantize_v2_round_half_up(x):
   return array_ops.quantize_and_dequantize_v2(
       x,
       -1,
       1.0,
       signed_input=True,
       num_bits=8,
       range_given=True,
       round_mode="HALF_UP")
コード例 #4
0
ファイル: unary_ops_test.py プロジェクト: jackd/tensorflow
 def quantize_and_dequantize_v2_round_half_up(x):
   return array_ops.quantize_and_dequantize_v2(
       x,
       -1,
       1.0,
       signed_input=True,
       num_bits=8,
       range_given=True,
       round_mode="HALF_UP")
コード例 #5
0
  def testFloatOps(self):
    for dtype in self.float_types:
      self._assertOpOutputMatchesExpected(
          math_ops.acosh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([0, 1.3169579, 1.76274717, 2.06343707],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.asinh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([0.88137359, 1.44363548, 1.81844646, 2.09471255],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.atanh,
          np.array([0.1, 0.2, 0.3, 0.4], dtype=dtype),
          expected=np.array([0.10033535, 0.20273255, 0.3095196, 0.42364893],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.ceil,
          np.array([[-1.7, 1.2]], dtype=dtype),
          expected=np.array([[-1, 2]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.cosh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.54308063, 3.76219569, 10.067662, 27.30823284],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.exp,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[0.36787945, 2.7182817]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.expm1,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[-0.63212056, 1.71828183]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.floor,
          np.array([[-1.7, 1.2]], dtype=dtype),
          expected=np.array([[-2, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.is_finite,
          np.array([[np.NINF, -2, -1, 0, 0.5, 1, 2, np.inf, np.nan]],
                   dtype=dtype),
          expected=np.array([[0, 1, 1, 1, 1, 1, 1, 0, 0]], dtype=np.bool))

      # Tests for tf.nn ops.
      self._assertOpOutputMatchesExpected(
          nn_ops.l2_loss, np.array([[[]]], dtype=dtype), expected=dtype(0))

      self._assertOpOutputMatchesExpected(nn_ops.l2_loss, dtype(4), dtype(8))

      self._assertOpOutputMatchesExpected(
          nn_ops.l2_loss, np.array([[-2, 4]], dtype=dtype), expected=dtype(10))

      self._assertOpOutputMatchesExpected(
          math_ops.reciprocal,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[1, 0.5]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.log,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0, 0.69314718]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sin,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0.841478, 0.909302]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.cos,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0.540297, -0.41614]], dtype=dtype))

      # TODO(b/34703906): improve log1p implementation and make tolerance
      # tighter.
      self._assertOpOutputMatchesExpected(
          math_ops.log1p,
          np.array([[1e-14, 1e-15, 0.6]], dtype=dtype),
          expected=np.log1p(np.array([[1e-14, 1e-15, 0.6]], dtype=dtype)))

      self._assertOpOutputMatchesExpected(
          math_ops.rint,
          np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                    [0.5, 1.5, 2.5, 3.5]], dtype=dtype),
          expected=np.array([[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                            dtype=dtype))
      self._assertOpOutputMatchesExpected(
          math_ops.round,
          np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                    [0.5, 1.5, 2.5, 3.5]], dtype=dtype),
          expected=np.array([[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.rsqrt,
          np.array([[4, 16]], dtype=dtype),
          expected=np.array([[0.5, 0.25]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sigmoid,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.7310586, 0.7310586, 0.7310586, 0.7310586],
               [0.7310586, 0.880797, 0.95257413, 0.98201376]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sigmoid,
          np.array([-300, -150, 0, 150, 300], dtype=dtype),
          expected=np.array([0, 0, 0.5, 1, 1], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sinh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.17520119, 3.62686041, 10.01787493, 27.2899172],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sqrt,
          np.array([[4, 9]], dtype=dtype),
          expected=np.array([[2, 3]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.tan,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.55740772, -2.18503986, -0.14254654, 1.15782128],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.tanh,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.76159418, 0.76159418, 0.76159418, 0.76159418],
               [0.76159418, 0.96402758, 0.99505478, 0.99932933]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.log_softmax,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[-1.3862944, -1.3862944, -1.3862944, -1.3862944],
               [-3.4401896, -2.4401896, -1.4401897, -0.44018969]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.elu,
          np.array([[-1, 0, 1]], dtype=dtype),
          expected=np.array([[-0.63212056, 0, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.selu,
          np.array([[-1, 0, 1]], dtype=dtype),
          expected=np.array([[-1.11133074, 0., 1.05070099]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.relu,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[0, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.relu6,
          np.array([[-0.05, 6.05, 5]], dtype=dtype),
          expected=np.array([[0, 6, 5]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.softmax,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.25, 0.25, 0.25, 0.25],
               [0.032058604, 0.087144323, 0.23688284, 0.64391428]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.softsign,
          np.array([[-2, -1, 0, 1, 2]], dtype=dtype),
          expected=np.array([[-0.66666669, -0.5, 0, 0.5, 0.66666669]],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.is_finite,
          np.array(
              [[42, float("inf"), -123], [float("nan"), 0, -0.0]], dtype=dtype),
          expected=np.array(
              [[True, False, True], [False, True, True]], dtype=np.bool))

      self._assertOpOutputMatchesExpected(
          lambda x: array_ops.quantize_and_dequantize_v2(x, -127, 127, True, 8),
          np.array([-1, -0.5, 0, 0.3], dtype=dtype),
          expected=np.array([-1, -64.0 / 127, 0, 38.0 / 127], dtype=dtype))
コード例 #6
0
 def quantize_and_dequantize_v2(x):
   return array_ops.quantize_and_dequantize_v2(
       x, -127, 127, signed_input=True, num_bits=8)
コード例 #7
0
 def quantize_and_dequantize_v2(x):
   return array_ops.quantize_and_dequantize_v2(
       x, -127, 127, signed_input=True, num_bits=8)
コード例 #8
0
ファイル: unary_ops_test.py プロジェクト: lengjia/RRL
  def testFloatOps(self):
    for dtype in self.float_types:
      self._assertOpOutputMatchesExpected(
          math_ops.acosh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([0, 1.3169579, 1.76274717, 2.06343707],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.asinh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([0.88137359, 1.44363548, 1.81844646, 2.09471255],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.atanh,
          np.array([0.1, 0.2, 0.3, 0.4], dtype=dtype),
          expected=np.array([0.10033535, 0.20273255, 0.3095196, 0.42364893],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.ceil,
          np.array([[-1.7, 1.2]], dtype=dtype),
          expected=np.array([[-1, 2]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.cosh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.54308063, 3.76219569, 10.067662, 27.30823284],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.exp,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[0.36787945, 2.7182817]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.expm1,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[-0.63212056, 1.71828183]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.floor,
          np.array([[-1.7, 1.2]], dtype=dtype),
          expected=np.array([[-2, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.is_finite,
          np.array([[np.NINF, -2, -1, 0, 0.5, 1, 2, np.inf, np.nan]],
                   dtype=dtype),
          expected=np.array([[0, 1, 1, 1, 1, 1, 1, 0, 0]], dtype=np.bool))

      # Tests for tf.nn ops.
      self._assertOpOutputMatchesExpected(
          nn_ops.l2_loss, np.array([[[]]], dtype=dtype), expected=dtype(0))

      self._assertOpOutputMatchesExpected(nn_ops.l2_loss, dtype(4), dtype(8))

      self._assertOpOutputMatchesExpected(
          nn_ops.l2_loss, np.array([[-2, 4]], dtype=dtype), expected=dtype(10))

      self._assertOpOutputMatchesExpected(
          math_ops.reciprocal,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[1, 0.5]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.log,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0, 0.69314718]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sin,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0.841478, 0.909302]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.cos,
          np.array([[1, 2]], dtype=dtype),
          expected=np.array([[0.540297, -0.41614]], dtype=dtype))

      # TODO(b/34703906): improve log1p implementation and make tolerance
      # tighter.
      self._assertOpOutputMatchesExpected(
          math_ops.log1p,
          np.array([[1e-14, 1e-15, 0.6]], dtype=dtype),
          expected=np.log1p(np.array([[1e-14, 1e-15, 0.6]], dtype=dtype)))

      self._assertOpOutputMatchesExpected(
          math_ops.rint,
          np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                    [0.5, 1.5, 2.5, 3.5]], dtype=dtype),
          expected=np.array([[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                            dtype=dtype))
      self._assertOpOutputMatchesExpected(
          math_ops.round,
          np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                    [0.5, 1.5, 2.5, 3.5]], dtype=dtype),
          expected=np.array([[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.rsqrt,
          np.array([[4, 16]], dtype=dtype),
          expected=np.array([[0.5, 0.25]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sigmoid,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.7310586, 0.7310586, 0.7310586, 0.7310586],
               [0.7310586, 0.880797, 0.95257413, 0.98201376]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sigmoid,
          np.array([-300, -150, 0, 150, 300], dtype=dtype),
          expected=np.array([0, 0, 0.5, 1, 1], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sinh,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.17520119, 3.62686041, 10.01787493, 27.2899172],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.sqrt,
          np.array([[4, 9]], dtype=dtype),
          expected=np.array([[2, 3]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.tan,
          np.array([1, 2, 3, 4], dtype=dtype),
          expected=np.array([1.55740772, -2.18503986, -0.14254654, 1.15782128],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.tanh,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.76159418, 0.76159418, 0.76159418, 0.76159418],
               [0.76159418, 0.96402758, 0.99505478, 0.99932933]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.log_softmax,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[-1.3862944, -1.3862944, -1.3862944, -1.3862944],
               [-3.4401896, -2.4401896, -1.4401897, -0.44018969]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.elu,
          np.array([[-1, 0, 1]], dtype=dtype),
          expected=np.array([[-0.63212056, 0, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.selu,
          np.array([[-1, 0, 1]], dtype=dtype),
          expected=np.array([[-1.11133074, 0., 1.05070099]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.relu,
          np.array([[-1, 1]], dtype=dtype),
          expected=np.array([[0, 1]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.relu6,
          np.array([[-0.05, 6.05, 5]], dtype=dtype),
          expected=np.array([[0, 6, 5]], dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.softmax,
          np.array(
              [[1, 1, 1, 1],
               [1, 2, 3, 4]],
              dtype=dtype),
          expected=np.array(
              [[0.25, 0.25, 0.25, 0.25],
               [0.032058604, 0.087144323, 0.23688284, 0.64391428]],
              dtype=dtype))

      self._assertOpOutputMatchesExpected(
          nn_ops.softsign,
          np.array([[-2, -1, 0, 1, 2]], dtype=dtype),
          expected=np.array([[-0.66666669, -0.5, 0, 0.5, 0.66666669]],
                            dtype=dtype))

      self._assertOpOutputMatchesExpected(
          math_ops.is_finite,
          np.array(
              [[42, float("inf"), -123], [float("nan"), 0, -0.0]], dtype=dtype),
          expected=np.array(
              [[True, False, True], [False, True, True]], dtype=np.bool))

      self._assertOpOutputMatchesExpected(
          lambda x: array_ops.quantize_and_dequantize_v2(x, -127, 127, True, 8),
          np.array([-1, -0.5, 0, 0.3], dtype=dtype),
          expected=np.array([-1, -64.0 / 127, 0, 38.0 / 127], dtype=dtype))
コード例 #9
0
    def testFloatOps(self):
        for dtype in self.float_types:
            # TODO(b/77694432): Half test failed on CPU, last ran on 04-06-2018.
            if dtype == np.float16 and self.device == "XLA_CPU":
                continue
            x = np.arange(-0.90, 0.90, 0.25)
            self._assertOpOutputMatchesExpected(
                math_ops.acos,
                x.astype(dtype),
                expected=np.arccos(x).astype(dtype))
            self._assertOpOutputMatchesExpected(
                math_ops.asin,
                x.astype(dtype),
                expected=np.arcsin(x).astype(dtype))
            x = np.arange(-3, 3).reshape(1, 3, 2)
            self._assertOpOutputMatchesExpected(
                math_ops.atan,
                x.astype(dtype),
                expected=np.arctan(x).astype(dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.acosh,
                np.array([1, 2, 3, 4], dtype=dtype),
                expected=np.array([0, 1.3169579, 1.76274717, 2.06343707],
                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.asinh,
                np.array([1, 2, 3, 4], dtype=dtype),
                expected=np.array(
                    [0.88137359, 1.44363548, 1.81844646, 2.09471255],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.atanh,
                np.array([0.1, 0.2, 0.3, 0.4], dtype=dtype),
                expected=np.array(
                    [0.10033535, 0.20273255, 0.3095196, 0.42364893],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(math_ops.ceil,
                                                np.array([[-1.7, 1.2]],
                                                         dtype=dtype),
                                                expected=np.array([[-1, 2]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.cosh,
                np.array([1, 2, 3, 4], dtype=dtype),
                expected=np.array(
                    [1.54308063, 3.76219569, 10.067662, 27.30823284],
                    dtype=dtype))

            # Disable float16 testing for now
            if dtype != np.float16:
                x = np.arange(-10, 10, 1).astype(dtype)
                with self.test_session() as session:
                    erf_x = session.run(math_ops.erf(x))
                    erfc_x = session.run(math_ops.erfc(x))

                self._assertOpOutputMatchesExpected(math_ops.erf,
                                                    x,
                                                    expected=erf_x)
                self._assertOpOutputMatchesExpected(math_ops.erfc,
                                                    x,
                                                    expected=erfc_x)

            self._assertOpOutputMatchesExpected(math_ops.exp,
                                                np.array([[-1, 1]],
                                                         dtype=dtype),
                                                expected=np.array(
                                                    [[0.36787945, 2.7182817]],
                                                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.expm1,
                np.array([[-1, 1]], dtype=dtype),
                expected=np.array([[-0.63212056, 1.71828183]], dtype=dtype),
                rtol=1e-5)

            self._assertOpOutputMatchesExpected(math_ops.floor,
                                                np.array([[-1.7, 1.2]],
                                                         dtype=dtype),
                                                expected=np.array([[-2, 1]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.is_finite,
                np.array([[np.NINF, -2, -1, 0, 0.5, 1, 2, np.inf, np.nan]],
                         dtype=dtype),
                expected=np.array([[0, 1, 1, 1, 1, 1, 1, 0, 0]],
                                  dtype=np.bool))

            # Tests for tf.nn ops.
            self._assertOpOutputMatchesExpected(nn_ops.l2_loss,
                                                np.array([[[]]], dtype=dtype),
                                                expected=dtype(0))

            self._assertOpOutputMatchesExpected(nn_ops.l2_loss, dtype(4),
                                                dtype(8))

            self._assertOpOutputMatchesExpected(nn_ops.l2_loss,
                                                np.array([[-2, 4]],
                                                         dtype=dtype),
                                                expected=dtype(10))

            self._assertOpOutputMatchesExpected(math_ops.reciprocal,
                                                np.array([[1, 2]],
                                                         dtype=dtype),
                                                expected=np.array([[1, 0.5]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.log,
                np.array([[1, 2]], dtype=dtype),
                expected=np.array([[0, 0.69314718]], dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.sin,
                np.array([[1, 2]], dtype=dtype),
                expected=np.array([[0.841478, 0.909302]], dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.cos,
                np.array([[1, 2]], dtype=dtype),
                expected=np.array([[0.540297, -0.41614]], dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.log1p,
                np.array([[1e-14, 1e-15, 0.6]], dtype=dtype),
                expected=np.log1p(np.array([[1e-14, 1e-15, 0.6]],
                                           dtype=dtype)),
                rtol=1e-4,
                atol=1e-6)

            self._assertOpOutputMatchesExpected(
                math_ops.rint,
                np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                          [0.5, 1.5, 2.5, 3.5]],
                         dtype=dtype),
                expected=np.array(
                    [[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                    dtype=dtype))
            self._assertOpOutputMatchesExpected(
                math_ops.round,
                np.array([[-1.7, 1.2, 4.0, 0.0], [-3.5, -2.5, -1.5, -0.5],
                          [0.5, 1.5, 2.5, 3.5]],
                         dtype=dtype),
                expected=np.array(
                    [[-2, 1, 4, 0], [-4, -2, -2, 0], [0, 2, 2, 4]],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.rsqrt,
                np.array([[4, 16]], dtype=dtype),
                expected=np.array([[0.5, 0.25]], dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.sigmoid,
                np.array([[1, 1, 1, 1], [1, 2, 3, 4]], dtype=dtype),
                expected=np.array(
                    [[0.7310586, 0.7310586, 0.7310586, 0.7310586],
                     [0.7310586, 0.880797, 0.95257413, 0.98201376]],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.sigmoid,
                np.array([-300, -150, 0, 150, 300], dtype=dtype),
                expected=np.array([0, 0, 0.5, 1, 1], dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.sinh,
                np.array([1, 2, 3, 4], dtype=dtype),
                expected=np.array(
                    [1.17520119, 3.62686041, 10.01787493, 27.2899172],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(math_ops.sqrt,
                                                np.array([[4, 9]],
                                                         dtype=dtype),
                                                expected=np.array([[2, 3]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.tan,
                np.array([1, 2, 3, 4], dtype=dtype),
                expected=np.array(
                    [1.55740772, -2.18503986, -0.14254654, 1.15782128],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.tanh,
                np.array([[1, 1, 1, 1], [1, 2, 3, 4]], dtype=dtype),
                expected=np.array(
                    [[0.76159418, 0.76159418, 0.76159418, 0.76159418],
                     [0.76159418, 0.96402758, 0.99505478, 0.99932933]],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                nn_ops.log_softmax,
                np.array([[1, 1, 1, 1], [1, 2, 3, 4]], dtype=dtype),
                expected=np.array(
                    [[-1.3862944, -1.3862944, -1.3862944, -1.3862944],
                     [-3.4401896, -2.4401896, -1.4401897, -0.44018969]],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                nn_ops.elu,
                np.array([[-1, 0, 1, -1e-6]], dtype=dtype),
                expected=np.array([[-0.63212056, 0, 1, -9.999995e-07]],
                                  dtype=dtype),
                rtol=1e-5,
                atol=1e-6)

            self._assertOpOutputMatchesExpected(
                nn_ops.selu,
                np.array([[-1, 0, 1, -1e-5]], dtype=dtype),
                expected=np.array(
                    [[-1.11133074, 0., 1.05070099, -1.758090550379974e-05]],
                    dtype=dtype),
                rtol=1e-5,
                atol=1e-6)

            self._assertOpOutputMatchesExpected(nn_ops.relu,
                                                np.array([[-1, 1]],
                                                         dtype=dtype),
                                                expected=np.array([[0, 1]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(nn_ops.relu6,
                                                np.array([[-0.05, 6.05, 5]],
                                                         dtype=dtype),
                                                expected=np.array([[0, 6, 5]],
                                                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                nn_ops.softmax,
                np.array([[1, 1, 1, 1], [1, 2, 3, 4]], dtype=dtype),
                expected=np.array(
                    [[0.25, 0.25, 0.25, 0.25],
                     [0.032058604, 0.087144323, 0.23688284, 0.64391428]],
                    dtype=dtype))

            self._assertOpOutputMatchesExpected(
                nn_ops.softsign,
                np.array([[-2, -1, 0, 1, 2]], dtype=dtype),
                expected=np.array([[-0.66666669, -0.5, 0, 0.5, 0.66666669]],
                                  dtype=dtype))

            self._assertOpOutputMatchesExpected(
                math_ops.is_finite,
                np.array([[42, float("inf"), -123], [float("nan"), 0, -0.0]],
                         dtype=dtype),
                expected=np.array([[True, False, True], [False, True, True]],
                                  dtype=np.bool))

            self._assertOpOutputMatchesExpected(
                lambda x: array_ops.quantize_and_dequantize_v2(
                    x, -127, 127, True, 8),
                np.array([-1, -0.5, 0, 0.3], dtype=dtype),
                expected=np.array([-1, -64.0 / 127, 0, 38.0 / 127],
                                  dtype=dtype))