Exemple #1
0
    def testSigmoidGrad(self):
        with ops.device("/device:IPU:0"):
            pa = array_ops.placeholder(np.float32, [3], name="grad")
            pb = array_ops.placeholder(np.float32, [3], name="in")
            c = gen_math_ops.sigmoid_grad(pa, pb)

        with ops.device('cpu'):
            report = gen_ipu_ops.ipu_event_trace()

        tu.configure_ipu_system()

        with tu.ipu_session() as sess:
            sess.run(report)

            fd = {pa: [2.0, 0.5, 1.0], pb: [-1.0, 1.0, 6.0]}
            result = sess.run(c, fd)
            self.assertAllClose(result, [2.0, 0.25, 0.0])

            result = sess.run(report)
            self.assertTrue(len(result) == 3)

            s = tu.extract_all_strings_from_event_trace(result)
            cs_list = tu.get_compute_sets_from_report(s)

            ok = ['__seed*', 'SigmoidGrad/custom-call/NonLinearityGrad']
            self.assertTrue(tu.check_all_compute_sets_and_list(cs_list, ok))
Exemple #2
0
    def test_sigmoidgrad_3d(self):
        y = constant_op.constant(self.generate_random_numbers(450, 1.0, 15.0),
                                 shape=[10, 3, 15])
        y_delta = constant_op.constant(self.generate_random_numbers(
            450, -3.0, 10.0),
                                       shape=[10, 3, 15])

        out = sigmoid_grad(y, y_delta)

        def run_test(sess):
            return sess.run(out)

        assert np.allclose(self.with_ngraph(run_test),
                           self.without_ngraph(run_test))
Exemple #3
0
  def testSigmoidGrad(self):
    with self.session() as sess:
      with ops.device("/device:IPU:0"):
        pa = array_ops.placeholder(np.float32, [3], name="grad")
        pb = array_ops.placeholder(np.float32, [3], name="in")
        c = gen_math_ops.sigmoid_grad(pa, pb)

      report = tu.ReportJSON(self, sess)
      report.reset()

      fd = {pa: [2.0, 0.5, 1.0], pb: [-1.0, 1.0, 6.0]}
      result = sess.run(c, fd)
      self.assertAllClose(result, [2.0, 0.25, 0.0])

      report.parse_log(assert_len=4)

      ok = ['__seed*', 'SigmoidGrad/sigmoid-grad/NonLinearityGrad']
      report.assert_all_compute_sets_and_list(ok)
def _SigmoidGradGrad(op, grad):
  with ops.control_dependencies([grad]):
    a = math_ops.conj(op.inputs[0])
    b = math_ops.conj(op.inputs[1])
    gb = grad * b
    return gb - 2.0 * gb * a, gen_math_ops.sigmoid_grad(a, grad)
def _SigmoidGrad(op, grad):
  """Returns grad * sigmoid(x) * (1 - sigmoid(x))."""
  y = op.outputs[0]  # y = sigmoid(x)
  with ops.control_dependencies([grad]):
    y = math_ops.conj(y)
    return gen_math_ops.sigmoid_grad(y, grad)
Exemple #6
0
def _SigmoidGradGrad(op, grad):
    with ops.control_dependencies([grad]):
        a = math_ops.conj(op.inputs[0])
        b = math_ops.conj(op.inputs[1])
        gb = grad * b
        return gb - 2.0 * gb * a, gen_math_ops.sigmoid_grad(a, grad)
Exemple #7
0
def _SigmoidGrad(op, grad):
    """Returns grad * sigmoid(x) * (1 - sigmoid(x))."""
    y = op.outputs[0]  # y = sigmoid(x)
    with ops.control_dependencies([grad]):
        y = math_ops.conj(y)
        return gen_math_ops.sigmoid_grad(y, grad)