Exemple #1
0
    def test_diag_plus_diag(self):
        diag1 = linalg.LinearOperatorDiag([1., 2.])
        diag2 = linalg.LinearOperatorDiag([-1., 3.])
        hints = linear_operator_addition._Hints(is_positive_definite=False,
                                                is_non_singular=False)

        self.assertTrue(self._adder.can_add(diag1, diag2))
        operator = self._adder.add(diag1, diag2, "my_operator", hints)
        self.assertIsInstance(operator, linalg.LinearOperatorFullMatrix)

        with self.cached_session():
            self.assertAllClose([[0., 0.], [0., 5.]], operator.to_dense())
        self.assertFalse(operator.is_positive_definite)
        self.assertFalse(operator.is_non_singular)
        self.assertEqual("my_operator", operator.name)
  def test_diag_plus_diag(self):
    diag1 = linalg.LinearOperatorDiag([1., 2.])
    diag2 = linalg.LinearOperatorDiag([-1., 3.])
    hints = linear_operator_addition._Hints(
        is_positive_definite=False, is_non_singular=False)

    self.assertTrue(self._adder.can_add(diag1, diag2))
    operator = self._adder.add(diag1, diag2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorFullMatrix)

    with self.test_session():
      self.assertAllClose([[0., 0.], [0., 5.]], operator.to_dense().eval())
    self.assertFalse(operator.is_positive_definite)
    self.assertFalse(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
Exemple #3
0
    def test_diag_plus_tril(self):
        diag = linalg.LinearOperatorDiag([1., 2.])
        tril = linalg.LinearOperatorLowerTriangular([[10., 0.], [30., 0.]])
        hints = linear_operator_addition._Hints(is_positive_definite=True,
                                                is_non_singular=True)

        self.assertTrue(self._adder.can_add(diag, diag))
        self.assertTrue(self._adder.can_add(diag, tril))
        operator = self._adder.add(diag, tril, "my_operator", hints)
        self.assertIsInstance(operator, linalg.LinearOperatorLowerTriangular)

        with self.cached_session():
            self.assertAllClose([[11., 0.], [30., 2.]], operator.to_dense())
        self.assertTrue(operator.is_positive_definite)
        self.assertTrue(operator.is_non_singular)
        self.assertEqual("my_operator", operator.name)
  def test_diag_plus_tril(self):
    diag = linalg.LinearOperatorDiag([1., 2.])
    tril = linalg.LinearOperatorLowerTriangular([[10., 0.], [30., 0.]])
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(diag, diag))
    self.assertTrue(self._adder.can_add(diag, tril))
    operator = self._adder.add(diag, tril, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorLowerTriangular)

    with self.test_session():
      self.assertAllClose([[11., 0.], [30., 2.]], operator.to_dense().eval())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
  def test_identity_plus_identity_returns_diag(self):
    id1 = linalg.LinearOperatorIdentity(num_rows=2)
    id2 = linalg.LinearOperatorIdentity(num_rows=2, batch_shape=[3])
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(id1, id2))
    operator = self._adder.add(id1, id2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorDiag)

    with self.cached_session():
      self.assertAllClose(2 * linalg_ops.eye(num_rows=2, batch_shape=[3]),
                          operator.to_dense())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
  def test_identity_plus_identity_returns_diag(self):
    id1 = linalg.LinearOperatorIdentity(num_rows=2)
    id2 = linalg.LinearOperatorIdentity(num_rows=2, batch_shape=[3])
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(id1, id2))
    operator = self._adder.add(id1, id2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorDiag)

    with self.test_session():
      self.assertAllClose(2 *
                          linalg_ops.eye(num_rows=2, batch_shape=[3]).eval(),
                          operator.to_dense().eval())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
  def test_scaled_identity_plus_scaled_identity(self):
    id1 = linalg.LinearOperatorScaledIdentity(
        num_rows=2, multiplier=[2.2, 2.2, 2.2])
    id2 = linalg.LinearOperatorScaledIdentity(num_rows=2, multiplier=-1.0)
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(id1, id2))
    operator = self._adder.add(id1, id2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorScaledIdentity)

    with self.cached_session():
      self.assertAllClose(1.2 * linalg_ops.eye(num_rows=2, batch_shape=[3]),
                          operator.to_dense())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
  def test_scaled_identity_plus_scaled_identity(self):
    id1 = linalg.LinearOperatorScaledIdentity(
        num_rows=2, multiplier=[2.2, 2.2, 2.2])
    id2 = linalg.LinearOperatorScaledIdentity(num_rows=2, multiplier=-1.0)
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(id1, id2))
    operator = self._adder.add(id1, id2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorScaledIdentity)

    with self.test_session():
      self.assertAllClose(1.2 *
                          linalg_ops.eye(num_rows=2, batch_shape=[3]).eval(),
                          operator.to_dense().eval())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)
Exemple #9
0
    def test_diag_plus_diag(self):
        diag1 = rng.rand(2, 3, 4)
        diag2 = rng.rand(4)
        op1 = linalg.LinearOperatorDiag(diag1)
        op2 = linalg.LinearOperatorDiag(diag2)
        hints = linear_operator_addition._Hints(is_positive_definite=True,
                                                is_non_singular=True)

        self.assertTrue(self._adder.can_add(op1, op2))
        operator = self._adder.add(op1, op2, "my_operator", hints)
        self.assertIsInstance(operator, linalg.LinearOperatorDiag)

        with self.cached_session():
            self.assertAllClose(
                linalg.LinearOperatorDiag(diag1 + diag2).to_dense(),
                operator.to_dense())
        self.assertTrue(operator.is_positive_definite)
        self.assertTrue(operator.is_non_singular)
        self.assertEqual("my_operator", operator.name)
  def test_diag_plus_diag(self):
    diag1 = rng.rand(2, 3, 4)
    diag2 = rng.rand(4)
    op1 = linalg.LinearOperatorDiag(diag1)
    op2 = linalg.LinearOperatorDiag(diag2)
    hints = linear_operator_addition._Hints(
        is_positive_definite=True, is_non_singular=True)

    self.assertTrue(self._adder.can_add(op1, op2))
    operator = self._adder.add(op1, op2, "my_operator", hints)
    self.assertIsInstance(operator, linalg.LinearOperatorDiag)

    with self.test_session():
      self.assertAllClose(
          linalg.LinearOperatorDiag(diag1 + diag2).to_dense().eval(),
          operator.to_dense().eval())
    self.assertTrue(operator.is_positive_definite)
    self.assertTrue(operator.is_non_singular)
    self.assertEqual("my_operator", operator.name)