diff options
author | Vijay Vasudevan <vrv@google.com> | 2015-12-03 10:26:25 -0800 |
---|---|---|
committer | Vijay Vasudevan <vrv@google.com> | 2015-12-03 10:26:25 -0800 |
commit | a4806a3fba7c00bea3e7022477339b2d09539751 (patch) | |
tree | 76014083c9c02262cb9cda146de9512b2939eefa /tensorflow/core/ops | |
parent | bb7a7a8858dc18ba733ed64e0733e27a4224ece8 (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.cc | 2 | ||||
-rw-r--r-- | tensorflow/core/ops/data_flow_ops.cc | 4 | ||||
-rw-r--r-- | tensorflow/core/ops/linalg_ops.cc | 37 | ||||
-rw-r--r-- | tensorflow/core/ops/math_ops.cc | 12 | ||||
-rw-r--r-- | tensorflow/core/ops/ops.pbtxt | 52 | ||||
-rw-r--r-- | tensorflow/core/ops/state_ops.cc | 6 |
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. |