Support a single Tensor in StagingArea.put() (#17863)
authorImSheridan <xiaoyudong0512@gmail.com>
Sat, 31 Mar 2018 22:57:00 +0000 (06:57 +0800)
committerSourabh Bajaj <1517779+sb2nov@users.noreply.github.com>
Sat, 31 Mar 2018 22:57:00 +0000 (15:57 -0700)
* Support a single Tensor in a StagingArea.put()

* Fix the input values parameter could also be dictionary type

tensorflow/python/ops/data_flow_ops.py

index d2cc875..cb72519 100644 (file)
@@ -1769,7 +1769,9 @@ class StagingArea(BaseStagingArea):
     its capacity.
 
     Args:
-      values: Tensor (or a tuple of Tensors) to place into the staging area.
+      values: A single tensor, a list or tuple of tensors, or a dictionary with
+        tensor values. The number of elements must match the length of the
+        list provided to the dtypes argument when creating the StagingArea.
       name: A name for the operation (optional).
 
     Returns:
@@ -1780,11 +1782,12 @@ class StagingArea(BaseStagingArea):
     """
     with ops.name_scope(name, "%s_put" % self._name,
                         self._scope_vals(values)) as scope:
+      
+      if not isinstance(values, (list, tuple, dict)):
+        values = [values]
 
       # Hard-code indices for this staging area
-      indices = (
-          list(six.moves.range(len(values)))
-          if isinstance(values, (list, tuple)) else None)
+      indices = list(six.moves.range(len(values)))
       vals, _ = self._check_put_dtypes(values, indices)
 
       with ops.colocate_with(self._coloc_op):