def split(self, value, lengths, name=None):
   """See TensorArray."""
   with ops.name_scope(name, "TensorArraySplit",
                       [self._handle, value, lengths]):
     value = ops.convert_to_tensor(value, name="value")
     with self._maybe_colocate_with(value):
       lengths_64 = math_ops.to_int64(lengths)
       if self._infer_shape and context.in_graph_mode():
         clengths = tensor_util.constant_value(lengths_64)
         if value.shape.dims is not None:
           if clengths is not None and clengths.max() == clengths.min():
             self._merge_element_shape(
                 tensor_shape.TensorShape([clengths[0]]).concatenate(
                     value.shape[1:]))
       flow_out = gen_data_flow_ops._tensor_array_split_v3(
           handle=self._handle,
           value=value,
           lengths=lengths_64,
           flow_in=self._flow,
           name=name)
     ta = TensorArray(
         dtype=self._dtype, handle=self._handle, flow=flow_out,
         colocate_with_first_write_call=self._colocate_with_first_write_call)
     ta._infer_shape = self._infer_shape
     ta._element_shape = self._element_shape
     ta._colocate_with = self._colocate_with
     return ta
Esempio n. 2
0
 def split(self, value, lengths, name=None):
     """See TensorArray."""
     with ops.name_scope(name, "TensorArraySplit",
                         [self._handle, value, lengths]):
         value = ops.convert_to_tensor(value, name="value")
         with self._maybe_colocate_with(value):
             lengths_64 = math_ops.to_int64(lengths)
             if self._infer_shape and context.in_graph_mode():
                 clengths = tensor_util.constant_value(lengths_64)
                 if value.shape.dims is not None:
                     if clengths is not None and clengths.max(
                     ) == clengths.min():
                         self._merge_element_shape(
                             tensor_shape.TensorShape([
                                 clengths[0]
                             ]).concatenate(value.shape[1:]))
             flow_out = gen_data_flow_ops._tensor_array_split_v3(
                 handle=self._handle,
                 value=value,
                 lengths=lengths_64,
                 flow_in=self._flow,
                 name=name)
         ta = TensorArray(dtype=self._dtype,
                          handle=self._handle,
                          flow=flow_out,
                          colocate_with_first_write_call=self.
                          _colocate_with_first_write_call)
         ta._infer_shape = self._infer_shape
         ta._element_shape = self._element_shape
         ta._colocate_with = self._colocate_with
         return ta
    def split(self, value, lengths, name=None):
        """Split the values of a `Tensor` into the TensorArray.

    Args:
      value: (N+1)-D.  Tensor of type `dtype`.  The Tensor to split.
      lengths: 1-D.  int32 vector with the lengths to use when splitting
        `value` along its first dimension.
      name: A name for the operation (optional).

    Returns:
      A new TensorArray object with flow that ensures the split occurs.
      Use this object all for subsequent operations.

    Raises:
      ValueError: if the shape inference fails.
    """
        with ops.name_scope(name, "TensorArraySplit",
                            [self._handle, value, lengths]):
            value = ops.convert_to_tensor(value, name="value")
            with self._maybe_colocate_with(value):
                lengths_64 = math_ops.to_int64(lengths)
                flow_out = gen_data_flow_ops._tensor_array_split_v3(
                    handle=self._handle,
                    value=value,
                    lengths=lengths_64,
                    flow_in=self._flow,
                    name=name)
            ta = TensorArray(dtype=self._dtype,
                             handle=self._handle,
                             flow=flow_out,
                             colocate_with_first_write_call=self.
                             _colocate_with_first_write_call)
            ta._infer_shape = self._infer_shape
            ta._element_shape = self._element_shape
            ta._colocate_with = self._colocate_with
            if ta._infer_shape and context.in_graph_mode():
                val_shape = flow_out.op.inputs[1].get_shape()
                clengths = tensor_util.constant_value(flow_out.op.inputs[2])
                element_shape = tensor_shape.unknown_shape()
                if val_shape.dims is not None:
                    if clengths is not None and clengths.max() == clengths.min(
                    ):
                        element_shape = tensor_shape.TensorShape(
                            [clengths[0]] + val_shape.dims[1:])
                ta._merge_element_shape(element_shape)
            return ta
Esempio n. 4
0
  def split(self, value, lengths, name=None):
    """Split the values of a `Tensor` into the TensorArray.

    Args:
      value: (N+1)-D.  Tensor of type `dtype`.  The Tensor to split.
      lengths: 1-D.  int32 vector with the lengths to use when splitting
        `value` along its first dimension.
      name: A name for the operation (optional).

    Returns:
      A new TensorArray object with flow that ensures the split occurs.
      Use this object all for subsequent operations.

    Raises:
      ValueError: if the shape inference fails.
    """
    with ops.name_scope(name, "TensorArraySplit",
                        [self._handle, value, lengths]):
      value = ops.convert_to_tensor(value, name="value")
      with self._maybe_colocate_with(value):
        lengths_64 = math_ops.to_int64(lengths)
        flow_out = gen_data_flow_ops._tensor_array_split_v3(
            handle=self._handle,
            value=value,
            lengths=lengths_64,
            flow_in=self._flow,
            name=name)
      ta = TensorArray(
          dtype=self._dtype, handle=self._handle, flow=flow_out,
          colocate_with_first_write_call=self._colocate_with_first_write_call)
      ta._infer_shape = self._infer_shape
      ta._element_shape = self._element_shape
      ta._colocate_with = self._colocate_with
      if ta._infer_shape and context.in_graph_mode():
        val_shape = flow_out.op.inputs[1].get_shape()
        clengths = tensor_util.constant_value(flow_out.op.inputs[2])
        element_shape = tensor_shape.unknown_shape()
        if val_shape.dims is not None:
          if clengths is not None and clengths.max() == clengths.min():
            element_shape = tensor_shape.TensorShape([clengths[0]] +
                                                     val_shape.dims[1:])
        ta._merge_element_shape(element_shape)
      return ta