aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Reed Wanderman-Milne <reedwm@google.com>2018-02-16 14:20:36 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-02-16 14:25:23 -0800
commitdd2efdf8cf0346e49592d7a339f09b1862a256c6 (patch)
tree13434ab2efd6eb85c5d497ca2b9bcead91944207
parentea70fb58f923a2c86ccc14cd38618afdc0dfa1bc (diff)
Automated g4 rollback of changelist 186018787
PiperOrigin-RevId: 186046129
-rw-r--r--tensorflow/python/framework/tensor_util.py3
-rw-r--r--tensorflow/python/framework/tensor_util_test.py19
2 files changed, 21 insertions, 1 deletions
diff --git a/tensorflow/python/framework/tensor_util.py b/tensorflow/python/framework/tensor_util.py
index 0e5f696111..27afaa074a 100644
--- a/tensorflow/python/framework/tensor_util.py
+++ b/tensorflow/python/framework/tensor_util.py
@@ -557,7 +557,8 @@ def MakeNdarray(tensor):
dtype = tensor_dtype.as_numpy_dtype
if tensor.tensor_content:
- return np.fromstring(tensor.tensor_content, dtype=dtype).reshape(shape)
+ return (np.frombuffer(tensor.tensor_content, dtype=dtype).copy()
+ .reshape(shape))
elif tensor_dtype == dtypes.float16:
# the half_val field of the TensorProto stores the binary representation
# of the fp16: we need to reinterpret this as a proper float16
diff --git a/tensorflow/python/framework/tensor_util_test.py b/tensorflow/python/framework/tensor_util_test.py
index f2de69e159..bea0ee34fd 100644
--- a/tensorflow/python/framework/tensor_util_test.py
+++ b/tensorflow/python/framework/tensor_util_test.py
@@ -199,6 +199,25 @@ class TensorUtilTest(test.TestCase):
dtype=nptype),
a)
+ def testFloatMutateArray(self):
+ t = tensor_util.make_tensor_proto([10.0, 20.0, 30.0], dtype=dtypes.float32)
+ a = tensor_util.MakeNdarray(t)
+ a[0] = 5.0
+ self.assertEquals(np.float32, a.dtype)
+ self.assertAllClose(np.array([5.0, 20.0, 30.0], dtype=np.float32), a)
+ if sys.byteorder == "big":
+ self.assertProtoEquals("""
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 3 } }
+ tensor_content: "A \000\000A\240\000\000A\360\000\000"
+ """, t)
+ else:
+ self.assertProtoEquals("""
+ dtype: DT_FLOAT
+ tensor_shape { dim { size: 3 } }
+ tensor_content: "\000\000 A\000\000\240A\000\000\360A"
+ """, t)
+
def testHalf(self):
t = tensor_util.make_tensor_proto(np.array([10.0, 20.0], dtype=np.float16))
self.assertProtoEquals("""