Resize¶
Resize - 19¶
Version¶
name: Resize (GitHub)
domain:
main
since_version:
19
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 19.
Summary¶
Resize the input tensor. In general, it calculates every value in the output tensor as a weighted average of neighborhood (a.k.a. sampling locations) in the input tensor. Each dimension value of the output tensor is:
output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)
if input “sizes” is not specified.
Attributes¶
antialias - INT (default is
'0'
):If set to 1, “linear” and “cubic” interpolation modes will use an antialiasing filter when downscaling. Antialiasing is achieved by stretching the resampling filter by a factor max(1, 1 / scale), which means that when downsampling, more input pixels contribute to an output pixel.
axes - INTS :
If provided, it specifies a subset of axes that ‘roi’, ‘scales’ and ‘sizes’ refer to. If not provided, all axes are assumed [0, 1, …, r-1], where r = rank(data). Non-specified dimensions are interpreted as non-resizable. Negative value means counting dimensions from the back. Accepted range is [-r, r-1], where r = rank(data). Behavior is undefined if an axis is repeated.
coordinate_transformation_mode - STRING (default is
'half_pixel'
):This attribute describes how to transform the coordinate in the resized tensor to the coordinate in the original tensor.
The coordinate of each dimension is transformed individually. Let’s describe a case using axis x as an example. Denote
x_resized
as the coordinate of axis x in the resized tensor,x_original
as the coordinate of axis x in the original tensor,length_original
as the length of the original tensor in axis x,length_resized
as the length of the resized tensor in axis x,scale = length_resized / length_original
,output_width
the target length on the axis x which can be a fractional number when it is calculated out of a scale factor, andoutput_width_int
the effective output width as an integer.if coordinate_transformation_mode is
"half_pixel"
,x_original = (x_resized + 0.5) / scale - 0.5
if coordinate_transformation_mode is
"half_pixel_symmetric"
,adjustment = output_width_int / output_width center = input_width / 2 offset = center * (1 - adjustment) x_ori = offset + (x + 0.5) / scale - 0.5
if coordinate_transformation_mode is
"pytorch_half_pixel"
,x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0
if coordinate_transformation_mode is
"align_corners"
,x_original = x_resized * (length_original - 1) / (length_resized - 1)
if coordinate_transformation_mode is
"asymmetric"
,x_original = x_resized / scale
if coordinate_transformation_mode is
"tf_crop_and_resize"
,x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1)
.
cubic_coeff_a - FLOAT (default is
'-0.75'
):The coefficient ‘a’ used in cubic interpolation. Two common choice are -0.5 (in some cases of TensorFlow) and -0.75 (in PyTorch). Check out Equation (4) in https://ieeexplore.ieee.org/document/1163711 for the details. This attribute is valid only if mode is “cubic”.
exclude_outside - INT (default is
'0'
):If set to 1, the weight of sampling locations outside the tensor will be set to 0 and the weight will be renormalized so that their sum is 1.0. The default value is 0.
extrapolation_value - FLOAT (default is
'0.0'
):When coordinate_transformation_mode is “tf_crop_and_resize” and x_original is outside the range [0, length_original - 1], this value is used as the corresponding output value. Default is 0.0f.
keep_aspect_ratio_policy - STRING (default is
'stretch'
):This attribute describes how to interpret the
sizes
input with regard to keeping the original aspect ratio of the input, and it is not applicable when thescales
input is used.Given a set of
sizes
, associated with a subset ofaxes
(explicitly provided or default), and assumingd = axes[i]
, withi
being the index of the providedsizes
.If
keep_aspect_ratio_policy
is"stretch"
, the original aspect ratio is disregarded, and the input is resized to the specified size:out_size[d] = sizes[i]
If
keep_aspect_ratio_policy
is"not_larger"
, the sizes are adjusted so that no extent of the output is larger than the specified size, while keeping the original aspect ratio:scale = Min(sizes[i] / in_size[d]) out_size[d] = round_int(scale * in_size[i])
If
keep_aspect_ratio_policy
is"not_smaller"
, the sizes are adjusted so that no extent of the output is smaller than the specified size, while keeping the original aspect ratio:scale = Max(sizes[i] / in_size[d]) out_size[d] = round_int(scale * in_size[i])
For non-resizable axes (those not specified in
axes
), the output size will be equal to the input size.Note:
round_int
stands for computing the nearest integer value, rounding halfway cases up.mode - STRING (default is
'nearest'
):Three interpolation modes: “nearest” (default), “linear” and “cubic”. The “linear” mode includes linear interpolation for 1D tensor and N-linear interpolation for N-D tensor (for example, bilinear interpolation for 2D tensor). The “cubic” mode includes cubic interpolation for 1D tensor and N-cubic interpolation for N-D tensor (for example, bicubic interpolation for 2D tensor).
nearest_mode - STRING (default is
'round_prefer_floor'
):Four modes: “round_prefer_floor” (default, as known as round half down), “round_prefer_ceil” (as known as round half up), “floor”, “ceil”. Only used by nearest interpolation. It indicates how to get “nearest” pixel in input tensor from x_original, so this attribute is valid only if “mode” is “nearest”.
Inputs¶
Between 1 and 4 inputs.
X (heterogeneous) - T1:
N-D tensor
roi (optional, heterogeneous) - T2:
1-D tensor given as [start1, …, startN, end1, …, endN], where N is the rank of X or the length of axes, if provided. The RoIs’ coordinates are normalized in the coordinate system of the input image. It only takes effect when coordinate_transformation_mode is “tf_crop_and_resize”
scales (optional, heterogeneous) - tensor(float):
The scale array along each dimension. It takes value greater than 0. If it’s less than 1, it’s sampling down, otherwise, it’s upsampling. The number of elements of ‘scales’ should be the same as the rank of input ‘X’ or the length of ‘axes’, if provided. One of ‘scales’ and ‘sizes’ MUST be specified and it is an error if both are specified. If ‘sizes’ is needed, the user can use an empty string as the name of ‘scales’ in this operator’s input list.
sizes (optional, heterogeneous) - tensor(int64):
Target size of the output tensor. Its interpretation depends on the ‘keep_aspect_ratio_policy’ value.The number of elements of ‘sizes’ should be the same as the rank of input ‘X’, or the length of ‘axes’, if provided. Only one of ‘scales’ and ‘sizes’ can be specified.
Outputs¶
Y (heterogeneous) - T1:
N-D tensor after resizing
Type Constraints¶
T1 in (
tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):Constrain input ‘X’ and output ‘Y’ to all tensor types.
T2 in (
tensor(double)
,tensor(float)
,tensor(float16)
):Constrain roi type to float or double.
Resize - 18¶
Version¶
name: Resize (GitHub)
domain:
main
since_version:
18
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 18.
Summary¶
Resize the input tensor. In general, it calculates every value in the output tensor as a weighted average of neighborhood (a.k.a. sampling locations) in the input tensor.
Each dimension value of the output tensor is:
output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)
if input “sizes” is not specified.
Attributes¶
antialias - INT (default is
'0'
):If set to 1, “linear” and “cubic” interpolation modes will use an antialiasing filter when downscaling. Antialiasing is achieved by stretching the resampling filter by a factor max(1, 1 / scale), which means that when downsampling, more input pixels contribute to an output pixel.
axes - INTS :
If provided, it specifies a subset of axes that ‘roi’, ‘scales’ and ‘sizes’ refer to. If not provided, all axes are assumed [0, 1, …, r-1], where r = rank(data). Non-specified dimensions are interpreted as non-resizable. Negative value means counting dimensions from the back. Accepted range is [-r, r-1], where r = rank(data). Behavior is undefined if an axis is repeated.
coordinate_transformation_mode - STRING (default is
'half_pixel'
):This attribute describes how to transform the coordinate in the resized tensor to the coordinate in the original tensor.
The coordinate of each dimension is transformed individually. Let’s describe a case using axis x as an example. Denote x_resized as the coordinate of axis x in the resized tensor, x_original as the coordinate of axis x in the original tensor,
length_original
as the length of the original tensor in axis x, length_resized as the length of the resized tensor in axis x, roi_x = (start_x, end_x) of the axis x in input “roi”,scale = length_resized / length_original
,if coordinate_transformation_mode is
"half_pixel"
,
x_original = (x_resized + 0.5) / scale - 0.5
if coordinate_transformation_mode is
"pytorch_half_pixel"
,
x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0
if coordinate_transformation_mode is
"align_corners"
,
x_original = x_resized * (length_original - 1) / (length_resized - 1)
if coordinate_transformation_mode is
"asymmetric"
,
x_original = x_resized / scale
if coordinate_transformation_mode is
"tf_crop_and_resize"
,
x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1)
.cubic_coeff_a - FLOAT (default is
'-0.75'
):The coefficient ‘a’ used in cubic interpolation. Two common choice are -0.5 (in some cases of TensorFlow) and -0.75 (in PyTorch). Check out Equation (4) in https://ieeexplore.ieee.org/document/1163711 for the details. This attribute is valid only if mode is “cubic”.
exclude_outside - INT (default is
'0'
):If set to 1, the weight of sampling locations outside the tensor will be set to 0 and the weight will be renormalized so that their sum is 1.0. The default value is 0.
extrapolation_value - FLOAT (default is
'0.0'
):When coordinate_transformation_mode is “tf_crop_and_resize” and x_original is outside the range [0, length_original - 1], this value is used as the corresponding output value. Default is 0.0f.
keep_aspect_ratio_policy - STRING (default is
'stretch'
):This attribute describes how to interpret the
sizes
input with regard to keeping the original aspect ratio of the input, and it is not applicable when thescales
input is used.Given a set of
sizes
, associated with a subset ofaxes
(explicitly provided or default), and assumingd = axes[i]
, withi
being the index of the providedsizes
.If
keep_aspect_ratio_policy
is"stretch"
, the original aspect ratio is disregarded, and the input is resized to the specified size:
out_size[d] = sizes[i]
If
keep_aspect_ratio_policy
is"not_larger"
, the sizes are adjusted so that no extent of the output is larger than the specified size, while keeping the original aspect ratio:
scale = Min(sizes[i] / in_size[d])
out_size[d] = round_int(scale * in_size[i])
If
keep_aspect_ratio_policy
is"not_smaller"
, the sizes are adjusted so that no extent of the output is smaller than the specified size, while keeping the original aspect ratio:
scale = Max(sizes[i] / in_size[d])
out_size[d] = round_int(scale * in_size[i])
For non-resizable axes (those not specified in
axes
), the output size will be equal to the input size.Note:
round_int
stands for computing the nearest integer value, rounding halfway cases up.mode - STRING (default is
'nearest'
):Three interpolation modes: “nearest” (default), “linear” and “cubic”. The “linear” mode includes linear interpolation for 1D tensor and N-linear interpolation for N-D tensor (for example, bilinear interpolation for 2D tensor). The “cubic” mode includes cubic interpolation for 1D tensor and N-cubic interpolation for N-D tensor (for example, bicubic interpolation for 2D tensor).
nearest_mode - STRING (default is
'round_prefer_floor'
):Four modes: “round_prefer_floor” (default, as known as round half down), “round_prefer_ceil” (as known as round half up), “floor”, “ceil”. Only used by nearest interpolation. It indicates how to get “nearest” pixel in input tensor from x_original, so this attribute is valid only if “mode” is “nearest”.
Inputs¶
Between 1 and 4 inputs.
X (heterogeneous) - T1:
N-D tensor
roi (optional, heterogeneous) - T2:
1-D tensor given as [start1, …, startN, end1, …, endN], where N is the rank of X or the length of axes, if provided. The RoIs’ coordinates are normalized in the coordinate system of the input image. It only takes effect when coordinate_transformation_mode is “tf_crop_and_resize”
scales (optional, heterogeneous) - tensor(float):
The scale array along each dimension. It takes value greater than 0. If it’s less than 1, it’s sampling down, otherwise, it’s upsampling. The number of elements of ‘scales’ should be the same as the rank of input ‘X’ or the length of ‘axes’, if provided. One of ‘scales’ and ‘sizes’ MUST be specified and it is an error if both are specified. If ‘sizes’ is needed, the user can use an empty string as the name of ‘scales’ in this operator’s input list.
sizes (optional, heterogeneous) - tensor(int64):
Target size of the output tensor. Its interpretation depends on the ‘keep_aspect_ratio_policy’ value.The number of elements of ‘sizes’ should be the same as the rank of input ‘X’, or the length of ‘axes’, if provided. Only one of ‘scales’ and ‘sizes’ can be specified.
Outputs¶
Y (heterogeneous) - T1:
N-D tensor after resizing
Type Constraints¶
T1 in (
tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):Constrain input ‘X’ and output ‘Y’ to all tensor types.
T2 in (
tensor(double)
,tensor(float)
,tensor(float16)
):Constrain roi type to float or double.
Resize - 13¶
Version¶
name: Resize (GitHub)
domain:
main
since_version:
13
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 13.
Summary¶
Resize the input tensor. In general, it calculates every value in the output tensor as a weighted average of neighborhood (a.k.a. sampling locations) in the input tensor. Each dimension value of the output tensor is: output_dimension = floor(input_dimension * (roi_end - roi_start) * scale) if input “sizes” is not specified.
Attributes¶
coordinate_transformation_mode - STRING (default is
'half_pixel'
):This attribute describes how to transform the coordinate in the resized tensor to the coordinate in the original tensor.
The coordinate of each dimension is transformed individually. Let’s describe a case using axis x as an example. Denote x_resized as the coordinate of axis x in the resized tensor, x_original as the coordinate of axis x in the original tensor, length_original as the length of the original tensor in axis x, length_resized as the length of the resized tensor in axis x, roi_x = (start_x, end_x) of the axis x in input “roi”, scale = length_resized / length_original,
if coordinate_transformation_mode is “half_pixel”,
x_original = (x_resized + 0.5) / scale - 0.5,if coordinate_transformation_mode is “pytorch_half_pixel”,
x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0,if coordinate_transformation_mode is “align_corners”,
x_original = x_resized * (length_original - 1) / (length_resized - 1),if coordinate_transformation_mode is “asymmetric”,
x_original = x_resized / scale,if coordinate_transformation_mode is “tf_crop_and_resize”,
x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1).cubic_coeff_a - FLOAT (default is
'-0.75'
):The coefficient ‘a’ used in cubic interpolation. Two common choice are -0.5 (in some cases of TensorFlow) and -0.75 (in PyTorch). Check out Equation (4) in https://ieeexplore.ieee.org/document/1163711 for the details. This attribute is valid only if “mode” is “cubic”.
exclude_outside - INT (default is
'0'
):If set to 1, the weight of sampling locations outside the tensor will be set to 0 and the weight will be renormalized so that their sum is 1.0. The default value is 0.
extrapolation_value - FLOAT (default is
'0.0'
):When coordinate_transformation_mode is “tf_crop_and_resize” and x_original is outside the range [0, length_original - 1], this value is used as the corresponding output value. Default is 0.0f.
mode - STRING (default is
'nearest'
):Three interpolation modes: nearest (default), linear and cubic. The “linear” mode includes linear interpolation for 1D tensor and N-linear interpolation for N-D tensor (for example, bilinear interpolation for 2D tensor). The “cubic” mode includes cubic interpolation for 1D tensor and N-cubic interpolation for N-D tensor (for example, bicubic interpolation for 2D tensor).
nearest_mode - STRING (default is
'round_prefer_floor'
):Four modes: round_prefer_floor (default, as known as round half down), round_prefer_ceil (as known as round half up), floor, ceil. Only used by nearest interpolation. It indicates how to get “nearest” pixel in input tensor from x_original, so this attribute is valid only if “mode” is “nearest”.
Inputs¶
Between 1 and 4 inputs.
X (heterogeneous) - T1:
N-D tensor
roi (optional, heterogeneous) - T2:
1-D tensor given as [start1, …, startN, end1, …, endN], where N is the rank of X. The RoIs’ coordinates are normalized in the coordinate system of the input image. It only takes effect when coordinate_transformation_mode is “tf_crop_and_resize”
scales (optional, heterogeneous) - tensor(float):
The scale array along each dimension. It takes value greater than 0. If it’s less than 1, it’s sampling down, otherwise, it’s upsampling. The number of elements of ‘scales’ should be the same as the rank of input ‘X’. One of ‘scales’ and ‘sizes’ MUST be specified and it is an error if both are specified. If ‘sizes’ is needed, the user can use an empty string as the name of ‘scales’ in this operator’s input list.
sizes (optional, heterogeneous) - tensor(int64):
The size of the output tensor. The number of elements of ‘sizes’ should be the same as the rank of input ‘X’. Only one of ‘scales’ and ‘sizes’ can be specified.
Outputs¶
Y (heterogeneous) - T1:
N-D tensor after resizing
Type Constraints¶
T1 in (
tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):Constrain input ‘X’ and output ‘Y’ to all tensor types.
T2 in (
tensor(double)
,tensor(float)
,tensor(float16)
):Constrain roi type to float or double.
Resize - 11¶
Version¶
name: Resize (GitHub)
domain:
main
since_version:
11
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 11.
Summary¶
Resize the input tensor. In general, it calculates every value in the output tensor as a weighted average of neighborhood (a.k.a. sampling locations) in the input tensor. Each dimension value of the output tensor is: output_dimension = floor(input_dimension * (roi_end - roi_start) * scale) if input “sizes” is not specified.
Attributes¶
coordinate_transformation_mode - STRING (default is
'half_pixel'
):This attribute describes how to transform the coordinate in the resized tensor to the coordinate in the original tensor.
The coordinate of each dimension is transformed individually. Let’s describe a case using axis x as an example. Denote x_resized as the coordinate of axis x in the resized tensor, x_original as the coordinate of axis x in the original tensor, length_original as the length of the original tensor in axis x, length_resized as the length of the resized tensor in axis x, roi_x = (start_x, end_x) of the axis x in input “roi”, scale = length_resized / length_original,
if coordinate_transformation_mode is “half_pixel”,
x_original = (x_resized + 0.5) / scale - 0.5,if coordinate_transformation_mode is “pytorch_half_pixel”,
x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0,if coordinate_transformation_mode is “align_corners”,
x_original = x_resized * (length_original - 1) / (length_resized - 1),if coordinate_transformation_mode is “asymmetric”,
x_original = x_resized / scale,if coordinate_transformation_mode is “tf_half_pixel_for_nn”,
x_original = (x_resized + 0.5) / scale,if coordinate_transformation_mode is “tf_crop_and_resize”,
x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1).cubic_coeff_a - FLOAT (default is
'-0.75'
):The coefficient ‘a’ used in cubic interpolation. Two common choice are -0.5 (in some cases of TensorFlow) and -0.75 (in PyTorch). Check out Equation (4) in https://ieeexplore.ieee.org/document/1163711 for the details. This attribute is valid only if “mode” is “cubic”.
exclude_outside - INT (default is
'0'
):If set to 1, the weight of sampling locations outside the tensor will be set to 0 and the weight will be renormalized so that their sum is 1.0. The default value is 0.
extrapolation_value - FLOAT (default is
'0.0'
):When coordinate_transformation_mode is “tf_crop_and_resize” and x_original is outside the range [0, length_original - 1], this value is used as the corresponding output value. Default is 0.0f.
mode - STRING (default is
'nearest'
):Three interpolation modes: nearest (default), linear and cubic. The “linear” mode includes linear interpolation for 1D tensor and N-linear interpolation for N-D tensor (for example, bilinear interpolation for 2D tensor). The “cubic” mode includes cubic interpolation for 1D tensor and N-cubic interpolation for N-D tensor (for example, bicubic interpolation for 2D tensor).
nearest_mode - STRING (default is
'round_prefer_floor'
):Four modes: round_prefer_floor (default, as known as round half down), round_prefer_ceil (as known as round half up), floor, ceil. Only used by nearest interpolation. It indicates how to get “nearest” pixel in input tensor from x_original, so this attribute is valid only if “mode” is “nearest”.
Inputs¶
Between 3 and 4 inputs.
X (heterogeneous) - T1:
N-D tensor
roi (heterogeneous) - T2:
1-D tensor given as [start1, …, startN, end1, …, endN], where N is the rank of X. The RoIs’ coordinates are normalized in the coordinate system of the input image. It only takes effect when coordinate_transformation_mode is “tf_crop_and_resize”
scales (heterogeneous) - tensor(float):
The scale array along each dimension. It takes value greater than 0. If it’s less than 1, it’s sampling down, otherwise, it’s upsampling. The number of elements of ‘scales’ should be the same as the rank of input ‘X’. If ‘size’ is needed, the user must set ‘scales’ to an empty tensor.
sizes (optional, heterogeneous) - tensor(int64):
The size of the output tensor. The number of elements of ‘sizes’ should be the same as the rank of input ‘X’. May only be set if ‘scales’ is set to an empty tensor.
Outputs¶
Y (heterogeneous) - T1:
N-D tensor after resizing
Type Constraints¶
T1 in (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):Constrain input ‘X’ and output ‘Y’ to all tensor types.
T2 in (
tensor(double)
,tensor(float)
,tensor(float16)
):Constrain roi type to float or double.
Resize - 10¶
Version¶
name: Resize (GitHub)
domain:
main
since_version:
10
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 10.
Summary¶
Resize the input tensor. Each dimension value of the output tensor is: output_dimension = floor(input_dimension * scale).
Attributes¶
mode - STRING (default is
'nearest'
):Two interpolation modes: nearest (default), and linear (including bilinear, trilinear, etc)
Inputs¶
X (heterogeneous) - T:
N-D tensor
scales (heterogeneous) - tensor(float):
The scale array along each dimension. It takes value greater than 0. If it’s less than 1, it’s sampling down, otherwise, it’s upsampling. The number of elements of ‘scales’ should be the same as the rank of input ‘X’.
Outputs¶
Y (heterogeneous) - T:
N-D tensor after resizing
Type Constraints¶
T in (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):Constrain input ‘X’ and output ‘Y’ to all tensor types.