UNPKG

@tensorflow/tfjs-core

Version:

Hardware-accelerated JavaScript library for machine intelligence

61 lines (60 loc) 2.47 kB
/** * @license * Copyright 2020 Google LLC. 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. * ============================================================================= */ /// <amd-module name="@tensorflow/tfjs-core/dist/ops/linalg/band_part" /> import { Scalar, Tensor } from '../../tensor'; import { TensorLike } from '../../types'; /** * Copy a tensor setting everything outside a central band in each innermost * matrix to zero. * * The band part is computed as follows: Assume input has `k` dimensions * `[I, J, K, ..., M, N]`, then the output is a tensor with the same shape where * `band[i, j, k, ..., m, n] = in_band(m, n) * input[i, j, k, ..., m, n]`. * The indicator function * `in_band(m, n) = (num_lower < 0 || (m-n) <= num_lower)` * `&& (num_upper < 0 || (n-m) <= num_upper)` * * ```js * const x = tf.tensor2d([[ 0, 1, 2, 3], * [-1, 0, 1, 2], * [-2, -1, 0, 1], * [-3, -2, -1, 0]]); * let y = tf.linalg.bandPart(x, 1, -1); * y.print(); // [[ 0, 1, 2, 3], * // [-1, 0, 1, 2], * // [ 0, -1, 0, 1], * // [ 0, 0 , -1, 0]] * let z = tf.linalg.bandPart(x, 2, 1); * z.print(); // [[ 0, 1, 0, 0], * // [-1, 0, 1, 0], * // [-2, -1, 0, 1], * // [ 0, -2, -1, 0]] * ``` * * @param x Rank `k` tensor * @param numLower Number of subdiagonals to keep. * If negative, keep entire lower triangle. * @param numUpper Number of subdiagonals to keep. * If negative, keep entire upper triangle. * @returns Rank `k` tensor of the same shape as input. * The extracted banded tensor. * * @doc {heading:'Operations', subheading:'Linear Algebra', namespace:'linalg'} */ declare function bandPart_<T extends Tensor>(a: T | TensorLike, numLower: number | Scalar, numUpper: number | Scalar): T; export declare const bandPart: typeof bandPart_; export {};