コード例 #1
0
ファイル: gradients_test.py プロジェクト: BloodD/tensorflow
  def testNoGradientForStringOutputs(self):
    with ops.Graph().as_default():
      def _TestOpGrad(_, float_grad, string_grad):
        """Gradient function for TestStringOutput."""
        self.assertEquals(float_grad.dtype, dtypes.float32)
        self.assertFalse(string_grad)
        return float_grad
      ops.RegisterGradient("TestStringOutput")(_TestOpGrad)

      c = constant(1.0)
      x, _ = test_ops.test_string_output(c)
      z = x * 2.0
      w = z * 3.0
      grads = gradients.gradients(z, [c])
      self.assertTrue(isinstance(grads[0], ops.Tensor))
      grads = gradients.gradients(w, [c])
      self.assertTrue(isinstance(grads[0], ops.Tensor))
コード例 #2
0
    def testNoGradientForStringOutputs(self):
        with ops.Graph().as_default():

            def _TestOpGrad(_, float_grad, string_grad):
                """Gradient function for TestStringOutput."""
                self.assertEquals(float_grad.dtype, dtypes.float32)
                self.assertFalse(string_grad)
                return float_grad

            ops.RegisterGradient("TestStringOutput")(_TestOpGrad)

            c = constant(1.0)
            x, _ = test_ops.test_string_output(c)
            z = x * 2.0
            w = z * 3.0
            grads = gradients.gradients(z, [c])
            self.assertTrue(isinstance(grads[0], ops.Tensor))
            grads = gradients.gradients(w, [c])
            self.assertTrue(isinstance(grads[0], ops.Tensor))
コード例 #3
0
    def testNoGradientForStringOutputs(self):
        # This test can't be run twice because the TestStringOutput gradient can
        # only be registered once. Just run with the C API enabled.
        if not ops._USE_C_API: return

        with ops.Graph().as_default():

            def _TestOpGrad(_, float_grad, string_grad):
                """Gradient function for TestStringOutput."""
                self.assertEquals(float_grad.dtype, dtypes.float32)
                self.assertFalse(string_grad)
                return float_grad

            ops.RegisterGradient("TestStringOutput")(_TestOpGrad)

            c = constant(1.0)
            x, _ = test_ops.test_string_output(c)
            z = x * 2.0
            w = z * 3.0
            grads = gradients.gradients(z, [c])
            self.assertTrue(isinstance(grads[0], ops.Tensor))
            grads = gradients.gradients(w, [c])
            self.assertTrue(isinstance(grads[0], ops.Tensor))
コード例 #4
0
  def testNoGradientForStringOutputs(self):
    # This test can't be run twice because the TestStringOutput gradient can
    # only be registered once. Just run with the C API enabled.
    if not ops._USE_C_API: return

    with ops.Graph().as_default():

      def _TestOpGrad(_, float_grad, string_grad):
        """Gradient function for TestStringOutput."""
        self.assertEquals(float_grad.dtype, dtypes.float32)
        self.assertFalse(string_grad)
        return float_grad

      ops.RegisterGradient("TestStringOutput")(_TestOpGrad)

      c = constant(1.0)
      x, _ = test_ops.test_string_output(c)
      z = x * 2.0
      w = z * 3.0
      grads = gradients.gradients(z, [c])
      self.assertTrue(isinstance(grads[0], ops.Tensor))
      grads = gradients.gradients(w, [c])
      self.assertTrue(isinstance(grads[0], ops.Tensor))