aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/framework
diff options
context:
space:
mode:
authorGravatar Yifei Feng <yifeif@google.com>2018-05-24 19:12:26 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-05-24 19:15:01 -0700
commitb59833c3fd91511b33255369016868e4ae6cda2e (patch)
treeecbd70cfd3abb5d934f6eb4b7280a35e8589f5cf /tensorflow/python/framework
parent2b99d9cbc7166efedaff9eee11744348da30fc8a (diff)
Merge changes from github.
Revert #18413. Too many internal test failures due to the name scope change caused by this change. Revert #18192. Cannot use re2::StringPiece internally. Need alternative for set call. Will pull and clean this up in a separate change. PiperOrigin-RevId: 197991247
Diffstat (limited to 'tensorflow/python/framework')
-rw-r--r--tensorflow/python/framework/fast_tensor_util.pyx12
-rw-r--r--tensorflow/python/framework/ops.py26
-rw-r--r--tensorflow/python/framework/tensor_util.py12
-rw-r--r--tensorflow/python/framework/test_util.py2
4 files changed, 31 insertions, 21 deletions
diff --git a/tensorflow/python/framework/fast_tensor_util.pyx b/tensorflow/python/framework/fast_tensor_util.pyx
index 19928314ef..17d112a1ec 100644
--- a/tensorflow/python/framework/fast_tensor_util.pyx
+++ b/tensorflow/python/framework/fast_tensor_util.pyx
@@ -7,6 +7,18 @@ cimport numpy as np
from tensorflow.python.util import compat
+def AppendFloat16ArrayToTensorProto(
+ # For numpy, npy_half is a typedef for npy_uint16,
+ # see: https://github.com/numpy/numpy/blob/master/doc/source/reference/c-api.coremath.rst#half-precision-functions
+ # Because np.float16_t dosen't exist in cython, we use uint16_t here.
+ # TODO: Use np.float16_t when cython supports it.
+ tensor_proto, np.ndarray[np.uint16_t, ndim=1] nparray):
+ cdef long i, n
+ n = nparray.size
+ for i in range(n):
+ tensor_proto.half_val.append(nparray[i])
+
+
def AppendFloat32ArrayToTensorProto(
tensor_proto, np.ndarray[np.float32_t, ndim=1] nparray):
cdef long i, n
diff --git a/tensorflow/python/framework/ops.py b/tensorflow/python/framework/ops.py
index 80140e4063..9fc8136348 100644
--- a/tensorflow/python/framework/ops.py
+++ b/tensorflow/python/framework/ops.py
@@ -2582,7 +2582,7 @@ def set_shape_and_handle_data_for_outputs(op):
When _USE_C_API = True, this is lazily called when a tensor's shape is first
requested. Usually this should work automatically, but some edge cases may
- require manaully calling this first to make sure Tensor._shape_val and
+ require manually calling this first to make sure Tensor._shape_val and
Tensor._handle_data are set (e.g. manually overriding _handle_data, copying a
Tensor).
"""
@@ -5426,36 +5426,30 @@ def enable_eager_execution(config=None, device_policy=None,
in which operations are executed. Note that @{tf.ConfigProto} is also
used to configure graph execution (via @{tf.Session}) and many options
within `tf.ConfigProto` are not implemented (or are irrelevant) when
- eager execution is enabled.
+ eager execution is enabled.
device_policy: (Optional.) Policy controlling how operations requiring
- inputs on a specific device (e.g., a GPU 0) handle inputs on a different
- device (e.g. GPU 1 or CPU). When set to None, an appropriate value will be
- picked automatically. The value picked may change between TensorFlow
- releases.
- Valid values:
-
+ inputs on a specific device (e.g., a GPU 0) handle inputs on a different
+ device (e.g. GPU 1 or CPU). When set to None, an appropriate value will be
+ picked automatically. The value picked may change between TensorFlow
+ releases.
+ Valid values:
- tf.contrib.eager.DEVICE_PLACEMENT_EXPLICIT: raises an error if the
placement is not correct.
-
- tf.contrib.eager.DEVICE_PLACEMENT_WARN: copies the tensors which are not
on the right device but logs a warning.
-
- tf.contrib.eager.DEVICE_PLACEMENT_SILENT: silently copies the tensors.
Note that this may hide performance problems as there is no notification
provided when operations are blocked on the tensor being copied between
devices.
-
- tf.contrib.eager.DEVICE_PLACEMENT_SILENT_FOR_INT32: silently copies
int32 tensors, raising errors on the other ones.
execution_mode: (Optional.) Policy controlling how operations dispatched are
actually executed. When set to None, an appropriate value will be picked
automatically. The value picked may change between TensorFlow releases.
Valid values:
-
- - tf.contrib.eager.SYNC: executes each operation synchronously.
-
- - tf.contrib.eager.ASYNC: executes each operation asynchronously. These
- operations may return "non-ready" handles.
+ - tf.contrib.eager.SYNC: executes each operation synchronously.
+ - tf.contrib.eager.ASYNC: executes each operation asynchronously. These
+ operations may return "non-ready" handles.
Raises:
ValueError: If eager execution is enabled after creating/executing a
diff --git a/tensorflow/python/framework/tensor_util.py b/tensorflow/python/framework/tensor_util.py
index 8cf24206ed..ca63efbc84 100644
--- a/tensorflow/python/framework/tensor_util.py
+++ b/tensorflow/python/framework/tensor_util.py
@@ -50,6 +50,13 @@ def SlowAppendFloat16ArrayToTensorProto(tensor_proto, proto_values):
[ExtractBitsFromFloat16(x) for x in proto_values])
+def _MediumAppendFloat16ArrayToTensorProto(tensor_proto, proto_values):
+ # TODO: Remove the conversion if cython supports np.float16_t
+ fast_tensor_util.AppendFloat16ArrayToTensorProto(
+ tensor_proto,
+ np.asarray(proto_values, dtype=np.float16).view(np.uint16))
+
+
def ExtractBitsFromBFloat16(x):
return np.asscalar(
np.asarray(x, dtype=dtypes.bfloat16.as_numpy_dtype).view(np.uint16))
@@ -64,11 +71,8 @@ if _FAST_TENSOR_UTIL_AVAILABLE:
_NP_TO_APPEND_FN = {
dtypes.bfloat16.as_numpy_dtype:
SlowAppendBFloat16ArrayToTensorProto,
- # TODO(sesse): We should have a
- # fast_tensor_util.AppendFloat16ArrayToTensorProto,
- # but it seems np.float16_t doesn't exist?
np.float16:
- SlowAppendFloat16ArrayToTensorProto,
+ _MediumAppendFloat16ArrayToTensorProto,
np.float32:
fast_tensor_util.AppendFloat32ArrayToTensorProto,
np.float64:
diff --git a/tensorflow/python/framework/test_util.py b/tensorflow/python/framework/test_util.py
index 97cd22e47a..5b01df48fe 100644
--- a/tensorflow/python/framework/test_util.py
+++ b/tensorflow/python/framework/test_util.py
@@ -682,7 +682,7 @@ def run_in_graph_and_eager_modes(__unused__=None,
Args:
- __unused__: Prevents sliently skipping tests.
+ __unused__: Prevents silently skipping tests.
config: An optional config_pb2.ConfigProto to use to configure the
session when executing graphs.
use_gpu: If True, attempt to run as many operations as possible on GPU.