Esempio n. 1
0
    def _assert_with_shape(self, tensor, expected_value, expected_shape,
                           unexpected_shapes):
        for unexpected_shape in unexpected_shapes:
            self.assertRaises(ValueError, tensor_util.with_shape,
                              unexpected_shape, tensor)
            pattern = (
                r"\[Wrong shape for %s \[expected\] \[actual\].\] \[%s\] \[%s\]"
                %
                (tensor.name, " ".join([str(dim) for dim in unexpected_shape]),
                 " ".join([str(dim) for dim in expected_shape])))
            self.assertRaisesRegexp(
                errors_impl.OpError, re.compile(pattern),
                tensor_util.with_shape(constant_op.constant(unexpected_shape),
                                       tensor).eval)
            expected_placeholder = array_ops.placeholder(dtypes.float32)
            self.assertRaisesRegexp(
                errors_impl.OpError, re.compile(pattern),
                tensor_util.with_same_shape(expected_placeholder, tensor).eval,
                {expected_placeholder: np.ones(unexpected_shape)})

        self.assertIs(tensor, tensor_util.with_shape(expected_shape, tensor))
        self.assertIs(
            tensor,
            tensor_util.with_same_shape(
                constant_op.constant(1, shape=expected_shape), tensor))
        tensor_with_shape = tensor_util.with_shape(
            constant_op.constant(expected_shape), tensor)
        np.testing.assert_array_equal(expected_value, tensor_with_shape.eval())
        tensor_with_same_shape = tensor_util.with_same_shape(
            expected_placeholder, tensor)
        np.testing.assert_array_equal(
            expected_value,
            tensor_with_same_shape.eval(
                {expected_placeholder: np.ones(expected_shape)}))
Esempio n. 2
0
  def test_with_shape_partial(self):
    with self.test_session():
      tensor_partial_shape = array_ops.placeholder(dtypes.float32)
      tensor_partial_shape.set_shape([None, 2])

      for incompatible_shape in [[0], [1]]:
        self.assertRaisesRegexp(
            ValueError, r"Shapes \(\?, 2\) and \([01],\) are not compatible",
            tensor_util.with_shape, incompatible_shape, tensor_partial_shape)
      for incompatible_shape in [[1, 2, 1]]:
        self.assertRaisesRegexp(ValueError, "Dimensions must be equal",
                                tensor_util.with_shape, incompatible_shape,
                                tensor_partial_shape)
      for incompatible_shape in [[2, 1]]:
        self.assertRaisesRegexp(
            ValueError, r"Shapes \(\?, 2\) and \(2, 1\) are not compatible",
            tensor_util.with_shape, incompatible_shape, tensor_partial_shape)

      compatible_shape = [2, 2]
      with_present_2x2 = tensor_util.with_shape(compatible_shape,
                                                tensor_partial_shape)
      self.assertEquals(compatible_shape, with_present_2x2.get_shape().dims)
      with_future_2x2 = tensor_util.with_shape(
          constant_op.constant(compatible_shape), tensor_partial_shape)

      array_2x2 = [[42.0, 43.0], [44.0, 45.0]]
      for tensor_2x2 in [with_present_2x2, with_future_2x2]:
        np.testing.assert_array_equal(array_2x2,
                                      tensor_2x2.eval({
                                          tensor_partial_shape: array_2x2
                                      }))
        self.assertRaises(ValueError, tensor_2x2.eval,
                          {tensor_partial_shape: [42.0, 43.0]})
        self.assertRaises(ValueError, tensor_2x2.eval,
                          {tensor_partial_shape: [42.0]})
Esempio n. 3
0
    def test_with_shape_partial(self):
        with self.test_session():
            tensor_partial_shape = array_ops.placeholder(dtypes.float32)
            tensor_partial_shape.set_shape([None, 2])

            for incompatible_shape in [[0], [1]]:
                if ops._USE_C_API:
                    error_message = "Shapes must be equal rank, but are 2 and 1"
                else:
                    error_message = r"Shapes \(\?, 2\) and \([01],\) are not compatible"
                self.assertRaisesRegexp(ValueError, error_message,
                                        tensor_util.with_shape,
                                        incompatible_shape,
                                        tensor_partial_shape)
            for incompatible_shape in [[1, 2, 1]]:
                self.assertRaisesRegexp(ValueError, "Dimensions must be equal",
                                        tensor_util.with_shape,
                                        incompatible_shape,
                                        tensor_partial_shape)
            for incompatible_shape in [[2, 1]]:
                if ops._USE_C_API:
                    error_message = (
                        r"Dimension 1 in both shapes must be equal, but are "
                        r"2 and 1. Shapes are \[\?,2\] and \[2,1\].")
                else:
                    error_message = r"Shapes \(\?, 2\) and \(2, 1\) are not compatible"
                self.assertRaisesRegexp(ValueError, error_message,
                                        tensor_util.with_shape,
                                        incompatible_shape,
                                        tensor_partial_shape)

            compatible_shape = [2, 2]
            with_present_2x2 = tensor_util.with_shape(compatible_shape,
                                                      tensor_partial_shape)
            self.assertEquals(compatible_shape,
                              with_present_2x2.get_shape().dims)
            with_future_2x2 = tensor_util.with_shape(
                constant_op.constant(compatible_shape), tensor_partial_shape)

            array_2x2 = [[42.0, 43.0], [44.0, 45.0]]
            for tensor_2x2 in [with_present_2x2, with_future_2x2]:
                np.testing.assert_array_equal(
                    array_2x2,
                    tensor_2x2.eval({tensor_partial_shape: array_2x2}))
                self.assertRaises(ValueError, tensor_2x2.eval,
                                  {tensor_partial_shape: [42.0, 43.0]})
                self.assertRaises(ValueError, tensor_2x2.eval,
                                  {tensor_partial_shape: [42.0]})
Esempio n. 4
0
 def test_with_shape_2x2_with_partial_expected_shape(self):
   with self.cached_session():
     value = [[42, 43], [44, 45]]
     actual_shape = [2, 2]
     tensor = constant_op.constant(value, shape=actual_shape)
     partial_expected_shape = tensor_shape.TensorShape([None, 2])
     # Won't raise any exception here:
     tensor_with_shape = tensor_util.with_shape(partial_expected_shape, tensor)
     np.testing.assert_array_equal(value, tensor_with_shape.eval())
Esempio n. 5
0
 def test_with_shape_2x2_with_partial_expected_shape(self):
   with self.test_session():
     value = [[42, 43], [44, 45]]
     actual_shape = [2, 2]
     tensor = constant_op.constant(value, shape=actual_shape)
     partial_expected_shape = tensor_shape.TensorShape([None, 2])
     # Won't raise any exception here:
     tensor_with_shape = tensor_util.with_shape(partial_expected_shape, tensor)
     np.testing.assert_array_equal(value, tensor_with_shape.eval())
Esempio n. 6
0
  def test_with_shape_none(self):
    with self.test_session():
      tensor_no_shape = array_ops.placeholder(dtypes.float32)

      compatible_shape = [2, 2]
      with_present_2x2 = tensor_util.with_shape(compatible_shape,
                                                tensor_no_shape)
      self.assertEquals(compatible_shape, with_present_2x2.get_shape().dims)
      with_future_2x2 = tensor_util.with_shape(
          constant_op.constant(compatible_shape), tensor_no_shape)

      array_2x2 = [[42.0, 43.0], [44.0, 45.0]]
      for tensor_2x2 in [with_present_2x2, with_future_2x2]:
        np.testing.assert_array_equal(array_2x2,
                                      tensor_2x2.eval({
                                          tensor_no_shape: array_2x2
                                      }))
        self.assertRaisesRegexp(errors_impl.OpError, "Wrong shape",
                                tensor_2x2.eval,
                                {tensor_no_shape: [42.0, 43.0]})
        self.assertRaisesRegexp(errors_impl.OpError, "Wrong shape",
                                tensor_2x2.eval, {tensor_no_shape: [42.0]})
Esempio n. 7
0
  def _assert_with_shape(self, tensor, expected_value, expected_shape,
                         unexpected_shapes):
    for unexpected_shape in unexpected_shapes:
      self.assertRaises(ValueError, tensor_util.with_shape, unexpected_shape,
                        tensor)
      pattern = (
          r"\[Wrong shape for %s \[expected\] \[actual\].\] \[%s\] \[%s\]" %
          (tensor.name, " ".join([str(dim) for dim in unexpected_shape]),
           " ".join([str(dim) for dim in expected_shape])))
      self.assertRaisesRegexp(errors_impl.OpError,
                              re.compile(pattern),
                              tensor_util.with_shape(
                                  constant_op.constant(unexpected_shape),
                                  tensor).eval)
      expected_placeholder = array_ops.placeholder(dtypes.float32)
      self.assertRaisesRegexp(errors_impl.OpError,
                              re.compile(pattern),
                              tensor_util.with_same_shape(expected_placeholder,
                                                          tensor).eval,
                              {expected_placeholder: np.ones(unexpected_shape)})

    self.assertIs(tensor, tensor_util.with_shape(expected_shape, tensor))
    self.assertIs(
        tensor,
        tensor_util.with_same_shape(
            constant_op.constant(
                1, shape=expected_shape), tensor))
    tensor_with_shape = tensor_util.with_shape(
        constant_op.constant(expected_shape), tensor)
    np.testing.assert_array_equal(expected_value, tensor_with_shape.eval())
    tensor_with_same_shape = tensor_util.with_same_shape(expected_placeholder,
                                                         tensor)
    np.testing.assert_array_equal(expected_value,
                                  tensor_with_same_shape.eval({
                                      expected_placeholder:
                                          np.ones(expected_shape)
                                  }))