aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/ops
diff options
context:
space:
mode:
authorGravatar Vijay Vasudevan <vrv@google.com>2015-12-03 10:26:25 -0800
committerGravatar Vijay Vasudevan <vrv@google.com>2015-12-03 10:26:25 -0800
commita4806a3fba7c00bea3e7022477339b2d09539751 (patch)
tree76014083c9c02262cb9cda146de9512b2939eefa /tensorflow/core/ops
parentbb7a7a8858dc18ba733ed64e0733e27a4224ece8 (diff)
TensorFlow: upstream changes to git.
Change 109321497 Move all images to images directory to make docs versioning easier - adjust all paths in the docs to point to the new locations - remove some now redundant section-order tags added for the old website Change 109317807 Added a kernel op to compute the eigendecomposition of a self-adjoint matrix. Added a new kernel op called self_adjoint_eig (and a batch_self_adjoint_eig) that computes the eigendecomposition of a self-adjoint matrix. The return value is the concatenation of the eigenvalues as a row vector, and the eigenvectors. Change 109310773 Change `_read32()` in the MNIST input example to return an int. Currently we return a 1-D numpy array with 1 element. Numpy has recently deprecated the ability to treat this as a scalar, and as a result this tutorial fails. The fix returns the 0th element of the array instead. Change 109301269 Re-arrange TensorBoard demo files. Change 109273589 add ci_build for ci.tensorflow.org Change 109260293 Speed up NodeDef -> OpKernel process by not spending time generating an error message for missing "_kernel" attr that will be thrown away. Change 109257179 TensorFlow:make event_file_loader_test hermetic by using tempfile instead of fixed filenames. Without this change, running event_file_loader_test twice in the same client (locally) causes it to fail, because it writes into the same file and appends another event, instead of starting from scratch. Change 109256464 Minor cleanup in TensorBoard server code Change 109255382 Change to reduce critical section times in gpu_event_mgr.h: (1) Call stream->ThenRecordEvent outside the EventMgr critical section (2) Do memory deallocation outside the critical section Speeds up one configuration of ptb_word_lm from 2924 words per second (wps) to 3278 wps on my desktop machine with a Titan X. Change 109254843 Fix use of uninitialized memory in test. Change 109250995 python_config.sh needs a license header Otherwise the license test fails. Change 109249914 add ci_build for ci.tensorflow.org Change 109249397 Fixes reduce_sum (complex) on GPU segfaults. Fixes #357 Change 109245652 add ci_build for ci.tensorflow.org Base CL: 109321563
Diffstat (limited to 'tensorflow/core/ops')
-rw-r--r--tensorflow/core/ops/array_ops.cc2
-rw-r--r--tensorflow/core/ops/data_flow_ops.cc4
-rw-r--r--tensorflow/core/ops/linalg_ops.cc37
-rw-r--r--tensorflow/core/ops/math_ops.cc12
-rw-r--r--tensorflow/core/ops/ops.pbtxt52
-rw-r--r--tensorflow/core/ops/state_ops.cc6
6 files changed, 101 insertions, 12 deletions
diff --git a/tensorflow/core/ops/array_ops.cc b/tensorflow/core/ops/array_ops.cc
index 8287d758f0..99cd3e61ce 100644
--- a/tensorflow/core/ops/array_ops.cc
+++ b/tensorflow/core/ops/array_ops.cc
@@ -326,7 +326,7 @@ If `indices` is a permutation and `len(indices) == params.shape[0]` then
this operation will permute `params` accordingly.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/Gather.png" alt>
+<img style="width:100%" src="../../images/Gather.png" alt>
</div>
)doc");
diff --git a/tensorflow/core/ops/data_flow_ops.cc b/tensorflow/core/ops/data_flow_ops.cc
index 59a7876289..c9d782f1c5 100644
--- a/tensorflow/core/ops/data_flow_ops.cc
+++ b/tensorflow/core/ops/data_flow_ops.cc
@@ -57,7 +57,7 @@ For example:
outputs[1] = [30, 40]
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/DynamicPartition.png" alt>
+<img style="width:100%" src="../../images/DynamicPartition.png" alt>
</div>
partitions: Any shape. Indices in the range `[0, num_partitions)`.
@@ -108,7 +108,7 @@ For example:
[51, 52], [61, 62]]
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/DynamicStitch.png" alt>
+<img style="width:100%" src="../../images/DynamicStitch.png" alt>
</div>
)doc");
diff --git a/tensorflow/core/ops/linalg_ops.cc b/tensorflow/core/ops/linalg_ops.cc
index 9b577e7562..a4b0b0aebf 100644
--- a/tensorflow/core/ops/linalg_ops.cc
+++ b/tensorflow/core/ops/linalg_ops.cc
@@ -123,4 +123,41 @@ output: Shape is `[..., M, M]`.
T: The type of values in the input and output.
)doc");
+REGISTER_OP("SelfAdjointEig")
+ .Input("input: T")
+ .Output("output: T")
+ .Attr("T: {double, float}")
+ .Doc(R"doc(
+Calculates the Eigen Decomposition of a square Self-Adjoint matrix.
+
+Only the lower-triangular part of the input will be used in this case. The
+upper-triangular part will not be read.
+
+The result is a M+1 x M matrix whose first row is the eigenvalues, and
+subsequent rows are eigenvectors.
+
+input: Shape is `[M, M]`.
+output: Shape is `[M+1, M]`.
+T: The type of values in the input and output.
+)doc");
+
+REGISTER_OP("BatchSelfAdjointEig")
+ .Input("input: T")
+ .Output("output: T")
+ .Attr("T: {double, float}")
+ .Doc(R"doc(
+Calculates the Eigen Decomposition of a batch of square self-adjoint matrices.
+
+The input is a tensor of shape `[..., M, M]` whose inner-most 2 dimensions
+form square matrices, with the same constraints as the single matrix
+SelfAdjointEig.
+
+The result is a '[..., M+1, M] matrix with [..., 0,:] containing the
+eigenvalues, and subsequent [...,1:, :] containing the eigenvectors.
+
+input: Shape is `[..., M, M]`.
+output: Shape is `[..., M+1, M]`.
+T: The type of values in the input and output.
+)doc");
+
} // namespace tensorflow
diff --git a/tensorflow/core/ops/math_ops.cc b/tensorflow/core/ops/math_ops.cc
index a1f1db5f7f..61080bc763 100644
--- a/tensorflow/core/ops/math_ops.cc
+++ b/tensorflow/core/ops/math_ops.cc
@@ -649,7 +649,7 @@ Computes a tensor such that
that `segment_ids[j] == i`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/SegmentSum.png" alt>
+<img style="width:100%" src="../../images/SegmentSum.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
@@ -678,7 +678,7 @@ over `j` such that `segment_ids[j] == i` and `N` is the total number of
values summed.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/SegmentMean.png" alt>
+<img style="width:100%" src="../../images/SegmentMean.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
@@ -706,7 +706,7 @@ Computes a tensor such that
that `segment_ids[j] == i`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/SegmentProd.png" alt>
+<img style="width:100%" src="../../images/SegmentProd.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
@@ -734,7 +734,7 @@ Computes a tensor such that
that `segment_ids[j] == i`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/SegmentMin.png" alt>
+<img style="width:100%" src="../../images/SegmentMin.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
@@ -761,7 +761,7 @@ Computes a tensor such that
that `segment_ids[j] == i`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/SegmentMax.png" alt>
+<img style="width:100%" src="../../images/SegmentMax.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
@@ -796,7 +796,7 @@ If the sum is empty for a given segment ID `i`, `output[i] = 0`.
`num_segments` should equal the number of distinct segment IDs.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/UnsortedSegmentSum.png" alt>
+<img style="width:100%" src="../../images/UnsortedSegmentSum.png" alt>
</div>
segment_ids: A 1-D tensor whose rank is equal to the rank of `data`'s
diff --git a/tensorflow/core/ops/ops.pbtxt b/tensorflow/core/ops/ops.pbtxt
index b529ef9c76..59a0ee62ee 100644
--- a/tensorflow/core/ops/ops.pbtxt
+++ b/tensorflow/core/ops/ops.pbtxt
@@ -1225,6 +1225,32 @@ op {
summary: "Gradients for batch normalization."
}
op {
+ name: "BatchSelfAdjointEig"
+ input_arg {
+ name: "input"
+ description: "Shape is `[..., M, M]`."
+ type_attr: "T"
+ }
+ output_arg {
+ name: "output"
+ description: "Shape is `[..., M+1, M]`."
+ type_attr: "T"
+ }
+ attr {
+ name: "T"
+ type: "type"
+ description: "The type of values in the input and output."
+ allowed_values {
+ list {
+ type: DT_DOUBLE
+ type: DT_FLOAT
+ }
+ }
+ }
+ summary: "Calculates the Eigen Decomposition of a batch of square self-adjoint matrices."
+ description: "The input is a tensor of shape `[..., M, M]` whose inner-most 2 dimensions\nform square matrices, with the same constraints as the single matrix\nSelfAdjointEig.\n\nThe result is a \'[..., M+1, M] matrix with [..., 0,:] containing the\neigenvalues, and subsequent [...,1:, :] containing the eigenvectors."
+}
+op {
name: "BiasAdd"
input_arg {
name: "value"
@@ -6520,6 +6546,32 @@ op {
description: "The `condition`, `t`, and `e` tensors must all have the same shape,\nand the output will also have that shape. The `condition` tensor acts\nas an element-wise mask that chooses, based on the value at each\nelement, whether the corresponding element in the output should be\ntaken from `t` (if true) or `e` (if false). For example:\n\nFor example:\n\n```prettyprint\n# \'condition\' tensor is [[True, False]\n# [True, False]]\n# \'t\' is [[1, 1],\n# [1, 1]]\n# \'e\' is [[2, 2],\n# [2, 2]]\nselect(condition, t, e) ==> [[1, 2],\n [1, 2]]\n```"
}
op {
+ name: "SelfAdjointEig"
+ input_arg {
+ name: "input"
+ description: "Shape is `[M, M]`."
+ type_attr: "T"
+ }
+ output_arg {
+ name: "output"
+ description: "Shape is `[M+1, M]`."
+ type_attr: "T"
+ }
+ attr {
+ name: "T"
+ type: "type"
+ description: "The type of values in the input and output."
+ allowed_values {
+ list {
+ type: DT_DOUBLE
+ type: DT_FLOAT
+ }
+ }
+ }
+ summary: "Calculates the Eigen Decomposition of a square Self-Adjoint matrix."
+ description: "Only the lower-triangular part of the input will be used in this case. The\nupper-triangular part will not be read.\n\nThe result is a M+1 x M matrix whose first row is the eigenvalues, and\nsubsequent rows are eigenvectors."
+}
+op {
name: "Shape"
input_arg {
name: "input"
diff --git a/tensorflow/core/ops/state_ops.cc b/tensorflow/core/ops/state_ops.cc
index 0855c16786..a5a3d14a07 100644
--- a/tensorflow/core/ops/state_ops.cc
+++ b/tensorflow/core/ops/state_ops.cc
@@ -188,7 +188,7 @@ override earlier entries.
Requires `updates.shape = indices.shape + ref.shape[1:]`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/ScatterUpdate.png" alt>
+<img style="width:100%" src="../../images/ScatterUpdate.png" alt>
</div>
ref: Should be from a `Variable` node.
@@ -231,7 +231,7 @@ the same location, their contributions add.
Requires `updates.shape = indices.shape + ref.shape[1:]`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/ScatterAdd.png" alt>
+<img style="width:100%" src="../../images/ScatterAdd.png" alt>
</div>
ref: Should be from a `Variable` node.
@@ -272,7 +272,7 @@ the same location, their (negated) contributions add.
Requires `updates.shape = indices.shape + ref.shape[1:]`.
<div style="width:70%; margin:auto; margin-bottom:10px; margin-top:20px;">
-<img style="width:100%" src="../images/ScatterSub.png" alt>
+<img style="width:100%" src="../../images/ScatterSub.png" alt>
</div>
ref: Should be from a `Variable` node.