Introduce tf.linalg namespace.

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
This commit is contained in:
A. Unique TensorFlower 2017-08-25 12:45:33 -07:00 committed by TensorFlower Gardener
parent 85a5d61578
commit d8347c8162
5 changed files with 181 additions and 1 deletions

View File

@ -64,6 +64,7 @@ py_library(
":initializers_ns",
":io_ops",
":lib",
":linalg_ns",
":math_ops",
":nn",
":platform",
@ -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"],

View File

@ -73,6 +73,7 @@ from tensorflow.python.ops.standard_ops import *
# Namespaces
from tensorflow.python.ops import initializers_ns as initializers
from tensorflow.python.ops import linalg_ns as linalg
# pylint: enable=wildcard-import
@ -228,6 +229,8 @@ _allowed_symbols.extend([
'gfile',
'graph_util',
'image',
'initializers',
'linalg',
'logging',
'losses',
'metrics',
@ -245,7 +248,6 @@ _allowed_symbols.extend([
'user_ops',
'layers',
'profiler',
'initializers',
])
# Variables framework.versions:

View File

@ -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

View File

@ -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\'], "
}
}

View File

@ -368,6 +368,10 @@ tf_module {
name: "layers"
mtype: "<type \'module\'>"
}
member {
name: "linalg"
mtype: "<type \'module\'>"
}
member {
name: "logging"
mtype: "<type \'module\'>"