Skip to content

Commit

Permalink
Introduce tf.linalg namespace.
Browse files Browse the repository at this point in the history
Ops are named tf.linalg.cholesky etc. Old aliases like tf.cholesky still work.
Notice that most ops were renamed to be more in line with the (more or less) equivalent numpy function.

PiperOrigin-RevId: 166511987
  • Loading branch information
tensorflower-gardener committed Aug 25, 2017
1 parent 85a5d61 commit d8347c8
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 1 deletion.
13 changes: 13 additions & 0 deletions tensorflow/python/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ py_library(
":initializers_ns",
":io_ops",
":lib",
":linalg_ns",
":math_ops",
":nn",
":platform",
Expand Down Expand Up @@ -1629,6 +1630,18 @@ py_library(
],
)

py_library(
name = "linalg_ns",
srcs = ["ops/linalg_ns.py"],
srcs_version = "PY2AND3",
deps = [
":array_ops",
":linalg_ops",
":math_ops",
":special_math_ops",
],
)

py_library(
name = "linalg_grad",
srcs = ["ops/linalg_grad.py"],
Expand Down
4 changes: 3 additions & 1 deletion tensorflow/python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@

# Namespaces
from tensorflow.python.ops import initializers_ns as initializers
from tensorflow.python.ops import linalg_ns as linalg

# pylint: enable=wildcard-import

Expand Down Expand Up @@ -228,6 +229,8 @@
'gfile',
'graph_util',
'image',
'initializers',
'linalg',
'logging',
'losses',
'metrics',
Expand All @@ -245,7 +248,6 @@
'user_ops',
'layers',
'profiler',
'initializers',
])

# Variables framework.versions:
Expand Down
62 changes: 62 additions & 0 deletions tensorflow/python/ops/linalg_ns.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""Public API for tf.linalg namespace."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from tensorflow.python.ops import array_ops
from tensorflow.python.ops import linalg_ops
from tensorflow.python.ops import math_ops
from tensorflow.python.ops import special_math_ops

# Linear algebra ops.
band_part = array_ops.matrix_band_part
cholesky = linalg_ops.cholesky
cholesky_solve = linalg_ops.cholesky_solve
det = linalg_ops.matrix_determinant
diag = array_ops.matrix_diag
diag_part = array_ops.matrix_diag_part
eigh = linalg_ops.self_adjoint_eig
eigvalsh = linalg_ops.self_adjoint_eigvals
einsum = special_math_ops.einsum
eye = linalg_ops.eye
inv = linalg_ops.matrix_inverse
lstsq = linalg_ops.matrix_solve_ls
norm = linalg_ops.norm
qr = linalg_ops.qr
set_diag = array_ops.matrix_set_diag
solve = linalg_ops.matrix_solve
svd = linalg_ops.svd
tensordot = math_ops.tensordot
trace = math_ops.trace
transpose = array_ops.matrix_transpose
triangular_solve = linalg_ops.matrix_triangular_solve

# Additional aliases for consistency with root namespace for ops whose names
# changed significantly when moving to the linalg namespace.
self_adjoint_eig = linalg_ops.self_adjoint_eig
self_adjoint_eigvals = linalg_ops.self_adjoint_eigvals
solve_ls = linalg_ops.matrix_solve_ls

# Seal API.
del absolute_import
del array_ops
del division
del linalg_ops
del math_ops
del print_function
del special_math_ops
99 changes: 99 additions & 0 deletions tensorflow/tools/api/golden/tensorflow.linalg.pbtxt
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
path: "tensorflow.linalg"
tf_module {
member_method {
name: "band_part"
argspec: "args=[\'input\', \'num_lower\', \'num_upper\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "cholesky"
argspec: "args=[\'input\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "cholesky_solve"
argspec: "args=[\'chol\', \'rhs\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "det"
argspec: "args=[\'input\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "diag"
argspec: "args=[\'diagonal\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "diag_part"
argspec: "args=[\'input\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "eigh"
argspec: "args=[\'tensor\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "eigvalsh"
argspec: "args=[\'tensor\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "einsum"
argspec: "args=[\'equation\'], varargs=inputs, keywords=kwargs, defaults=None"
}
member_method {
name: "eye"
argspec: "args=[\'num_rows\', \'num_columns\', \'batch_shape\', \'dtype\', \'name\'], varargs=None, keywords=None, defaults=[\'None\', \'None\', \"<dtype: \'float32\'>\", \'None\'], "
}
member_method {
name: "inv"
argspec: "args=[\'input\', \'adjoint\', \'name\'], varargs=None, keywords=None, defaults=[\'False\', \'None\'], "
}
member_method {
name: "lstsq"
argspec: "args=[\'matrix\', \'rhs\', \'l2_regularizer\', \'fast\', \'name\'], varargs=None, keywords=None, defaults=[\'0.0\', \'True\', \'None\'], "
}
member_method {
name: "norm"
argspec: "args=[\'tensor\', \'ord\', \'axis\', \'keep_dims\', \'name\'], varargs=None, keywords=None, defaults=[\'euclidean\', \'None\', \'False\', \'None\'], "
}
member_method {
name: "qr"
argspec: "args=[\'input\', \'full_matrices\', \'name\'], varargs=None, keywords=None, defaults=[\'False\', \'None\'], "
}
member_method {
name: "self_adjoint_eig"
argspec: "args=[\'tensor\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "self_adjoint_eigvals"
argspec: "args=[\'tensor\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "set_diag"
argspec: "args=[\'input\', \'diagonal\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "solve"
argspec: "args=[\'matrix\', \'rhs\', \'adjoint\', \'name\'], varargs=None, keywords=None, defaults=[\'False\', \'None\'], "
}
member_method {
name: "solve_ls"
argspec: "args=[\'matrix\', \'rhs\', \'l2_regularizer\', \'fast\', \'name\'], varargs=None, keywords=None, defaults=[\'0.0\', \'True\', \'None\'], "
}
member_method {
name: "svd"
argspec: "args=[\'tensor\', \'full_matrices\', \'compute_uv\', \'name\'], varargs=None, keywords=None, defaults=[\'False\', \'True\', \'None\'], "
}
member_method {
name: "tensordot"
argspec: "args=[\'a\', \'b\', \'axes\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "trace"
argspec: "args=[\'x\', \'name\'], varargs=None, keywords=None, defaults=[\'None\'], "
}
member_method {
name: "transpose"
argspec: "args=[\'a\', \'name\'], varargs=None, keywords=None, defaults=[\'matrix_transpose\'], "
}
member_method {
name: "triangular_solve"
argspec: "args=[\'matrix\', \'rhs\', \'lower\', \'adjoint\', \'name\'], varargs=None, keywords=None, defaults=[\'True\', \'False\', \'None\'], "
}
}
4 changes: 4 additions & 0 deletions tensorflow/tools/api/golden/tensorflow.pbtxt
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,10 @@ tf_module {
name: "layers"
mtype: "<type \'module\'>"
}
member {
name: "linalg"
mtype: "<type \'module\'>"
}
member {
name: "logging"
mtype: "<type \'module\'>"
Expand Down

0 comments on commit d8347c8

Please sign in to comment.