Beispiel #1
0
  def testSlowPathExecute_VeryLargeOutputs(self):
    split_dim = constant_op.constant(0, dtype=dtypes.int32)
    value = [0, 1, 2, 3]
    ctx = context.context()
    ctx.ensure_initialized()

    with self.assertRaises(core._FallbackException):
      pywrap_tfe.TFE_Py_FastPathExecute(ctx, "Split", None, split_dim, value,
                                        "num_split", 1000000000000)

    value = constant_op.constant(value)
    attrs = ("num_splits", 1000000000000)
    with self.assertRaisesRegex(ValueError, "Number of outputs is too big"):
      pywrap_tfe.TFE_Py_Execute(ctx._handle, None, "Split", [value], attrs,
                                1000000000000)
Beispiel #2
0
def quick_execute(op_name, num_outputs, inputs, attrs, ctx, name=None):
  """Execute a TensorFlow operation.

  Args:
    op_name: Name of the TensorFlow operation (see REGISTER_OP in C++ code) to
      execute.
    num_outputs: The number of outputs of the operation to fetch.
                 (Explicitly provided instead of being inferred for performance
                 reasons).
    inputs: A list of inputs to the operation. Each entry should be a Tensor, or
      a value which can be passed to the Tensor constructor to create one.
    attrs: A tuple with alternating string attr names and attr values for this
      operation.
    ctx: The value of context.context().
    name: Customized name for the operation.

  Returns:
    List of output Tensor objects. The list is empty if there are no outputs

  Raises:
    An exception on error.
  """
  device_name = ctx.device_name
  # pylint: disable=protected-access
  try:
    ctx.ensure_initialized()
    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
                                        inputs, attrs, num_outputs)
  except core._NotOkStatusException as e:
    if name is not None:
      message = e.message + " name: " + name
    else:
      message = e.message
    six.raise_from(core._status_to_exception(e.code, message), None)
  except TypeError as e:
    keras_symbolic_tensors = [
        x for x in inputs if ops._is_keras_symbolic_tensor(x)
    ]
    if keras_symbolic_tensors:
      raise core._SymbolicException(
          "Inputs to eager execution function cannot be Keras symbolic "
          "tensors, but found {}".format(keras_symbolic_tensors))
    raise e
  # pylint: enable=protected-access
  return tensors
Beispiel #3
0
 def func():
     pywrap_tfe.TFE_Py_Execute(ctx_handle, device, "MatMul", inputs,
                               attrs, 1)
Beispiel #4
0
 def f():
     pywrap_tfe.TFE_Py_Execute(ctx_handle, None, "Identity", inputs,
                               attrs, 1)