/**
|
* @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/conv_util" />
|
type PadType = 'SAME' | 'VALID' | 'NUMBER' | 'EXPLICIT';
|
export type ExplicitPadding = [
|
[number, number],
|
[number, number],
|
[number, number],
|
[number, number]
|
];
|
export type PadInfo = {
|
top: number;
|
left: number;
|
right: number;
|
bottom: number;
|
type: PadType;
|
};
|
export type PadInfo3D = {
|
top: number;
|
left: number;
|
right: number;
|
bottom: number;
|
front: number;
|
back: number;
|
type: PadType;
|
};
|
/**
|
* Information about the forward pass of a convolution/pooling operation.
|
* It includes input and output shape, strides, filter size and padding
|
* information.
|
*/
|
export type Conv2DInfo = {
|
batchSize: number;
|
inHeight: number;
|
inWidth: number;
|
inChannels: number;
|
outHeight: number;
|
outWidth: number;
|
outChannels: number;
|
dataFormat: 'channelsFirst' | 'channelsLast';
|
strideHeight: number;
|
strideWidth: number;
|
dilationHeight: number;
|
dilationWidth: number;
|
filterHeight: number;
|
filterWidth: number;
|
effectiveFilterHeight: number;
|
effectiveFilterWidth: number;
|
padInfo: PadInfo;
|
inShape: [number, number, number, number];
|
outShape: [number, number, number, number];
|
filterShape: [number, number, number, number];
|
};
|
/**
|
*
|
* @param inputShape Input tensor shape is of the following dimensions:
|
* `[batch, height, width, inChannels]`.
|
* @param filterShape The filter shape is of the following dimensions:
|
* `[filterHeight, filterWidth, depth]`.
|
* @param strides The strides of the sliding window for each dimension of the
|
* input tensor: `[strideHeight, strideWidth]`.
|
* If `strides` is a single number,
|
* then `strideHeight == strideWidth`.
|
* @param pad The type of padding algorithm.
|
* - `same` and stride 1: output will be of same size as input,
|
* regardless of filter size.
|
* - `valid`: output will be smaller than input if filter is larger
|
* than 1*1x1.
|
* - For more info, see this guide:
|
* [https://www.tensorflow.org/api_docs/python/tf/nn/convolution](
|
* https://www.tensorflow.org/api_docs/python/tf/nn/convolution)
|
* @param dataFormat The data format of the input and output data.
|
* Defaults to 'NHWC'.
|
* @param dilations The dilation rates: `[dilationHeight, dilationWidth]`.
|
* Defaults to `[1, 1]`. If `dilations` is a single number, then
|
* `dilationHeight == dilationWidth`.
|
*/
|
export declare function computeDilation2DInfo(inputShape: [number, number, number, number], filterShape: [number, number, number], strides: number | [number, number], pad: 'same' | 'valid' | number, dataFormat: 'NHWC', dilations: number | [number, number]): Conv2DInfo;
|
export declare function computePool2DInfo(inShape: [number, number, number, number], filterSize: [number, number] | number, strides: number | [number, number], dilations: number | [number, number], pad: 'same' | 'valid' | number | ExplicitPadding, roundingMode?: 'floor' | 'round' | 'ceil', dataFormat?: 'channelsFirst' | 'channelsLast'): Conv2DInfo;
|
/**
|
* Computes the information for a forward pass of a pooling3D operation.
|
*/
|
export declare function computePool3DInfo(inShape: [number, number, number, number, number], filterSize: number | [number, number, number], strides: number | [number, number, number], dilations: number | [number, number, number], pad: 'same' | 'valid' | number, roundingMode?: 'floor' | 'round' | 'ceil', dataFormat?: 'NDHWC' | 'NCDHW'): Conv3DInfo;
|
/**
|
* Computes the information for a forward pass of a convolution/pooling
|
* operation.
|
*/
|
export declare function computeConv2DInfo(inShape: [number, number, number, number], filterShape: [number, number, number, number], strides: number | [number, number], dilations: number | [number, number], pad: 'same' | 'valid' | number | ExplicitPadding, roundingMode?: 'floor' | 'round' | 'ceil', depthwise?: boolean, dataFormat?: 'channelsFirst' | 'channelsLast'): Conv2DInfo;
|
/**
|
* Information about the forward pass of a 3D convolution/pooling operation.
|
* It includes input and output shape, strides, filter size and padding
|
* information.
|
*/
|
export type Conv3DInfo = {
|
batchSize: number;
|
inDepth: number;
|
inHeight: number;
|
inWidth: number;
|
inChannels: number;
|
outDepth: number;
|
outHeight: number;
|
outWidth: number;
|
outChannels: number;
|
dataFormat: 'channelsFirst' | 'channelsLast';
|
strideDepth: number;
|
strideHeight: number;
|
strideWidth: number;
|
dilationDepth: number;
|
dilationHeight: number;
|
dilationWidth: number;
|
filterDepth: number;
|
filterHeight: number;
|
filterWidth: number;
|
effectiveFilterDepth: number;
|
effectiveFilterHeight: number;
|
effectiveFilterWidth: number;
|
padInfo: PadInfo3D;
|
inShape: [number, number, number, number, number];
|
outShape: [number, number, number, number, number];
|
filterShape: [number, number, number, number, number];
|
};
|
/**
|
* Computes the information for a forward pass of a 3D convolution/pooling
|
* operation.
|
*/
|
export declare function computeConv3DInfo(inShape: [number, number, number, number, number], filterShape: [number, number, number, number, number], strides: number | [number, number, number], dilations: number | [number, number, number], pad: 'same' | 'valid' | number, depthwise?: boolean, dataFormat?: 'channelsFirst' | 'channelsLast', roundingMode?: 'floor' | 'round' | 'ceil'): Conv3DInfo;
|
export declare function computeDefaultPad(inputShape: [number, number] | [number, number, number, number], fieldSize: number, stride: number, dilation?: number): number;
|
export declare function tupleValuesAreOne(param: number | number[]): boolean;
|
export declare function eitherStridesOrDilationsAreOne(strides: number | number[], dilations: number | number[]): boolean;
|
export declare function stridesOrDilationsArePositive(values: number | number[]): boolean;
|
/**
|
* Convert Conv2D dataFormat from 'NHWC'|'NCHW' to
|
* 'channelsLast'|'channelsFirst'
|
* @param dataFormat in 'NHWC'|'NCHW' mode
|
* @return dataFormat in 'channelsLast'|'channelsFirst' mode
|
* @throws unknown dataFormat
|
*/
|
export declare function convertConv2DDataFormat(dataFormat: 'NHWC' | 'NCHW'): 'channelsLast' | 'channelsFirst';
|
/**
|
* Check validity of pad when using dimRoundingMode.
|
* @param opDesc A string of op description
|
* @param pad The type of padding algorithm.
|
* - `same` and stride 1: output will be of same size as input,
|
* regardless of filter size.
|
* - `valid` output will be smaller than input if filter is larger
|
* than 1x1.
|
* - For more info, see this guide:
|
* [https://www.tensorflow.org/api_docs/python/tf/nn/convolution](
|
* https://www.tensorflow.org/api_docs/python/tf/nn/convolution)
|
* @param dimRoundingMode A string from: 'ceil', 'round', 'floor'. If none is
|
* provided, it will default to truncate.
|
* @throws unknown padding parameter
|
*/
|
export declare function checkPadOnDimRoundingMode(opDesc: string, pad: 'valid' | 'same' | number | ExplicitPadding, dimRoundingMode?: 'floor' | 'round' | 'ceil'): void;
|
export {};
|