pull/7364/head
lihongkang 4 years ago
parent 5cf9fabf44
commit 0bf0862112

@ -382,9 +382,11 @@ class PReLU(Cell):
Tensor, with the same type and shape as the `input_data`. Tensor, with the same type and shape as the `input_data`.
Examples: Examples:
>>> input_x = Tensor(np.random.rand(1, 10, 4, 4), mindspore.float32) >>> input_x = Tensor(np.array([[[[0.1, 0.6], [0.9, 0.9]]]]), mindspore.float32)
>>> prelu = nn.PReLU() >>> prelu = nn.PReLU()
>>> prelu(input_x) >>> prelu(input_x)
[[[[0.1 0.6]
[0.9 0.9]]]]
""" """
@cell_attr_register(attrs="") @cell_attr_register(attrs="")

@ -197,8 +197,8 @@ class SSIM(Cell):
Args: Args:
max_val (Union[int, float]): The dynamic range of the pixel values (255 for 8-bit grayscale images). max_val (Union[int, float]): The dynamic range of the pixel values (255 for 8-bit grayscale images).
Default: 1.0. Default: 1.0.
filter_size (int): The size of the Gaussian filter. Default: 11. filter_size (int): The size of the Gaussian filter. Default: 11. The value must be greater than or equal to 1.
filter_sigma (float): The standard deviation of Gaussian kernel. Default: 1.5. filter_sigma (float): The standard deviation of Gaussian kernel. Default: 1.5. The value must be greater than 0.
k1 (float): The constant used to generate c1 in the luminance comparison function. Default: 0.01. k1 (float): The constant used to generate c1 in the luminance comparison function. Default: 0.01.
k2 (float): The constant used to generate c2 in the contrast comparison function. Default: 0.03. k2 (float): The constant used to generate c2 in the contrast comparison function. Default: 0.03.
@ -211,9 +211,10 @@ class SSIM(Cell):
Examples: Examples:
>>> net = nn.SSIM() >>> net = nn.SSIM()
>>> img1 = Tensor(np.random.random((1,3,16,16))) >>> img1 = Tensor(np.random.random((1,3,16,16)), mindspore.float32)
>>> img2 = Tensor(np.random.random((1,3,16,16))) >>> img2 = Tensor(np.random.random((1,3,16,16)), mindspore.float32)
>>> ssim = net(img1, img2) >>> ssim = net(img1, img2)
[0.12174469]
""" """
def __init__(self, max_val=1.0, filter_size=11, filter_sigma=1.5, k1=0.01, k2=0.03): def __init__(self, max_val=1.0, filter_size=11, filter_sigma=1.5, k1=0.01, k2=0.03):
super(SSIM, self).__init__() super(SSIM, self).__init__()

@ -42,6 +42,12 @@ sparse_apply_ftrl_d_op_info = TBERegOp("SparseApplyFtrl") \
DataType.I32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC) \ DataType.I32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC) \
.dtype_format(DataType.F32_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default, .dtype_format(DataType.F32_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default,
DataType.I32_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default) \ DataType.I32_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default) \
.dtype_format(DataType.F32_NCHW, DataType.F32_NCHW, DataType.F32_NCHW, DataType.F32_NCHW,
DataType.I64_NCHW, DataType.F32_NCHW, DataType.F32_NCHW, DataType.F32_NCHW) \
.dtype_format(DataType.F32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC,
DataType.I64_NHWC, DataType.F32_NHWC, DataType.F32_NHWC, DataType.F32_NHWC) \
.dtype_format(DataType.F32_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default,
DataType.I64_Default, DataType.F32_Default, DataType.F32_Default, DataType.F32_Default) \
.get_op_info() .get_op_info()

@ -196,6 +196,8 @@ class SameTypeShape(PrimitiveWithInfer):
>>> input_x = Tensor(np.array([[2, 2], [2, 2]]), mindspore.float32) >>> input_x = Tensor(np.array([[2, 2], [2, 2]]), mindspore.float32)
>>> input_y = Tensor(np.array([[2, 2], [2, 2]]), mindspore.float32) >>> input_y = Tensor(np.array([[2, 2], [2, 2]]), mindspore.float32)
>>> out = P.SameTypeShape()(input_x, input_y) >>> out = P.SameTypeShape()(input_x, input_y)
[[2. 2.]
[2. 2.]]
""" """
@prim_attr_register @prim_attr_register
@ -383,6 +385,9 @@ class Reshape(PrimitiveWithInfer):
>>> input_tensor = Tensor(np.array([[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]]), mindspore.float32) >>> input_tensor = Tensor(np.array([[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]]), mindspore.float32)
>>> reshape = P.Reshape() >>> reshape = P.Reshape()
>>> output = reshape(input_tensor, (3, 2)) >>> output = reshape(input_tensor, (3, 2))
[[-0.1 0.3]
[3.6 0.4 ]
[0.5 -3.2]]
""" """
@prim_attr_register @prim_attr_register
@ -553,7 +558,7 @@ class Transpose(PrimitiveWithInfer):
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`. - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
- **input_perm** (tuple[int]) - The permutation to be converted. The input tuple is constructed by multiple - **input_perm** (tuple[int]) - The permutation to be converted. The input tuple is constructed by multiple
indexes. The length of `input_perm` and the shape of `input_x` must be the same. Only constant value is indexes. The length of `input_perm` and the shape of `input_x` must be the same. Only constant value is
allowed. allowed. Must be in the range [0, rank(input_x)).
Outputs: Outputs:
Tensor, the type of output tensor is the same as `input_x` and the shape of output tensor is decided by the Tensor, the type of output tensor is the same as `input_x` and the shape of output tensor is decided by the
@ -564,6 +569,12 @@ class Transpose(PrimitiveWithInfer):
>>> perm = (0, 2, 1) >>> perm = (0, 2, 1)
>>> transpose = P.Transpose() >>> transpose = P.Transpose()
>>> output = transpose(input_tensor, perm) >>> output = transpose(input_tensor, perm)
[[[1. 4.]
[2. 5.]
[3. 6.]]
[[7. 10.]
[8. 11.]
[9. 12.]]]
""" """
@prim_attr_register @prim_attr_register
@ -1904,6 +1915,7 @@ class Slice(PrimitiveWithInfer):
>>> [[3, 3, 3], [4, 4, 4]], >>> [[3, 3, 3], [4, 4, 4]],
>>> [[5, 5, 5], [6, 6, 6]]]).astype(np.int32)) >>> [[5, 5, 5], [6, 6, 6]]]).astype(np.int32))
>>> type = P.Slice()(data, (1, 0, 0), (1, 1, 3)) >>> type = P.Slice()(data, (1, 0, 0), (1, 1, 3))
[[[3 3 3]]]
""" """
@prim_attr_register @prim_attr_register
@ -2049,6 +2061,7 @@ class Select(PrimitiveWithInfer):
>>> input_x = Tensor([2,3], mindspore.float32) >>> input_x = Tensor([2,3], mindspore.float32)
>>> input_y = Tensor([1,2], mindspore.float32) >>> input_y = Tensor([1,2], mindspore.float32)
>>> select(input_cond, input_x, input_y) >>> select(input_cond, input_x, input_y)
[2. 2.]
""" """
@prim_attr_register @prim_attr_register
@ -2513,9 +2526,11 @@ class ResizeNearestNeighbor(PrimitiveWithInfer):
Tensor, the shape of the output tensor is :math:`(N, C, NEW\_H, NEW\_W)`. Tensor, the shape of the output tensor is :math:`(N, C, NEW\_H, NEW\_W)`.
Examples: Examples:
>>> input_tensor = Tensor(np.array([[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]]), mindspore.float32) >>> input_tensor = Tensor(np.array([[[[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]]]]), mindspore.float32)
>>> resize = P.ResizeNearestNeighbor((2, 2)) >>> resize = P.ResizeNearestNeighbor((2, 2))
>>> output = resize(input_tensor) >>> output = resize(input_tensor)
[[[[-0.1 0.3]
[0.4 0.5 ]]]]
""" """
@prim_attr_register @prim_attr_register

@ -326,7 +326,7 @@ class ReduceMean(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[Number]) - The input tensor. - **input_x** (Tensor[Number]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, has the same dtype as the `input_x`. Tensor, has the same dtype as the `input_x`.
@ -342,6 +342,8 @@ class ReduceMean(_Reduce):
>>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32)) >>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32))
>>> op = P.ReduceMean(keep_dims=True) >>> op = P.ReduceMean(keep_dims=True)
>>> output = op(input_x, 1) >>> output = op(input_x, 1)
>>> output.shape
(3, 1, 5, 6)
""" """
@ -358,7 +360,7 @@ class ReduceSum(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[Number]) - The input tensor. - **input_x** (Tensor[Number]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, has the same dtype as the `input_x`. Tensor, has the same dtype as the `input_x`.
@ -374,6 +376,8 @@ class ReduceSum(_Reduce):
>>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32)) >>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32))
>>> op = P.ReduceSum(keep_dims=True) >>> op = P.ReduceSum(keep_dims=True)
>>> output = op(input_x, 1) >>> output = op(input_x, 1)
>>> output.shape
(3, 1, 5, 6)
""" """
@prim_attr_register @prim_attr_register
@ -397,7 +401,7 @@ class ReduceAll(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[bool]) - The input tensor. - **input_x** (Tensor[bool]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, the dtype is bool. Tensor, the dtype is bool.
@ -435,7 +439,7 @@ class ReduceAny(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[bool]) - The input tensor. - **input_x** (Tensor[bool]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, the dtype is bool. Tensor, the dtype is bool.
@ -473,7 +477,7 @@ class ReduceMax(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[Number]) - The input tensor. - **input_x** (Tensor[Number]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, has the same dtype as the `input_x`. Tensor, has the same dtype as the `input_x`.
@ -514,7 +518,7 @@ class ReduceMin(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[Number]) - The input tensor. - **input_x** (Tensor[Number]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, has the same dtype as the `input_x`. Tensor, has the same dtype as the `input_x`.
@ -530,6 +534,8 @@ class ReduceMin(_Reduce):
>>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32)) >>> input_x = Tensor(np.random.randn(3, 4, 5, 6).astype(np.float32))
>>> op = P.ReduceMin(keep_dims=True) >>> op = P.ReduceMin(keep_dims=True)
>>> output = op(input_x, 1) >>> output = op(input_x, 1)
>>> output.shape
(3, 1, 5, 6)
""" """
@ -547,7 +553,7 @@ class ReduceProd(_Reduce):
Inputs: Inputs:
- **input_x** (Tensor[Number]) - The input tensor. - **input_x** (Tensor[Number]) - The input tensor.
- **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions. - **axis** (Union[int, tuple(int), list(int)]) - The dimensions to reduce. Default: (), reduce all dimensions.
Only constant value is allowed. Only constant value is allowed. Must be in the range [-rank(input_x), rank(input_x)).
Outputs: Outputs:
Tensor, has the same dtype as the `input_x`. Tensor, has the same dtype as the `input_x`.
@ -3270,11 +3276,11 @@ class SquareSumAll(PrimitiveWithInfer):
- **output_y2** (Tensor) - The same type as the `input_x1`. - **output_y2** (Tensor) - The same type as the `input_x1`.
Examples: Examples:
>>> input_x1 = Tensor(np.random.randint([3, 2, 5, 7]), mindspore.float32) >>> input_x1 = Tensor(np.array([0, 0, 2, 0]), mindspore.float32)
>>> input_x2 = Tensor(np.random.randint([3, 2, 5, 7]), mindspore.float32) >>> input_x2 = Tensor(np.array([0, 0, 2, 4]), mindspore.float32)
>>> square_sum_all = P.SquareSumAll() >>> square_sum_all = P.SquareSumAll()
>>> square_sum_all(input_x1, input_x2) >>> square_sum_all(input_x1, input_x2)
(27, 26) (4, 20)
""" """
@prim_attr_register @prim_attr_register

@ -2500,7 +2500,8 @@ class ResizeBilinear(PrimitiveWithInfer):
can be represented by different data types, but the data types of output images are always float32. can be represented by different data types, but the data types of output images are always float32.
Args: Args:
size (tuple[int]): A tuple of 2 int elements `(new_height, new_width)`, the new size of the images. size (Union[tuple[int], list[int]]): A tuple or list of 2 int elements `(new_height, new_width)`, the new size
of the images.
align_corners (bool): If true, rescale input by `(new_height - 1) / (height - 1)`, align_corners (bool): If true, rescale input by `(new_height - 1) / (height - 1)`,
which exactly aligns the 4 corners of images and resized images. If false, which exactly aligns the 4 corners of images and resized images. If false,
rescale by `new_height / height`. Default: False. rescale by `new_height / height`. Default: False.
@ -2521,7 +2522,7 @@ class ResizeBilinear(PrimitiveWithInfer):
@prim_attr_register @prim_attr_register
def __init__(self, size, align_corners=False): def __init__(self, size, align_corners=False):
pass validator.check_value_type("size", size, [tuple, list], self.name)
def infer_shape(self, input_shape): def infer_shape(self, input_shape):
validator.check("input shape rank", len(input_shape), "", 4, Rel.EQ, self.name) validator.check("input shape rank", len(input_shape), "", 4, Rel.EQ, self.name)
@ -2857,10 +2858,12 @@ class SigmoidCrossEntropyWithLogits(PrimitiveWithInfer):
Tensor, with the same shape and type as input `logits`. Tensor, with the same shape and type as input `logits`.
Examples: Examples:
>>> logits = Tensor(np.random.randn(2, 3).astype(np.float16)) >>> logits = Tensor(np.array([[-0.8, 1.2, 0.7], [-0.1, -0.4, 0.7]]).astype(np.float16))
>>> labels = Tensor(np.random.randn(2, 3).astype(np.float16)) >>> labels = Tensor(np.array([[0.3, 0.8, 1.2], [-0.6, 0.1, 2.2]]).astype(np.float16))
>>> sigmoid = P.SigmoidCrossEntropyWithLogits() >>> sigmoid = P.SigmoidCrossEntropyWithLogits()
>>> sigmoid(logits, labels) >>> sigmoid(logits, labels)
[[0.6113 0.5034 0.263 ]
[0.5845 0.553 -0.4365]]
""" """
@prim_attr_register @prim_attr_register
@ -3043,7 +3046,8 @@ class ROIAlign(PrimitiveWithInfer):
>>> rois = Tensor(np.array([[0, 0.2, 0.3, 0.2, 0.3]]), mindspore.float32) >>> rois = Tensor(np.array([[0, 0.2, 0.3, 0.2, 0.3]]), mindspore.float32)
>>> roi_align = P.ROIAlign(2, 2, 0.5, 2) >>> roi_align = P.ROIAlign(2, 2, 0.5, 2)
>>> output_tensor = roi_align(input_tensor, rois) >>> output_tensor = roi_align(input_tensor, rois)
>>> assert output_tensor == Tensor(np.array([[[[2.15]]]]), mindspore.float32) [[[[1.77499998e+00, 2.02500010e+00],
[2.27500010e+00, 2.52500010e+00]]]]
""" """
@prim_attr_register @prim_attr_register
@ -3062,6 +3066,7 @@ class ROIAlign(PrimitiveWithInfer):
self.roi_end_mode = roi_end_mode self.roi_end_mode = roi_end_mode
def infer_shape(self, inputs_shape, rois_shape): def infer_shape(self, inputs_shape, rois_shape):
validator.check("input shape rank", len(inputs_shape), "", 4, Rel.LE, self.name)
return [rois_shape[0], inputs_shape[1], self.pooled_height, self.pooled_width] return [rois_shape[0], inputs_shape[1], self.pooled_height, self.pooled_width]
def infer_dtype(self, inputs_type, rois_type): def infer_dtype(self, inputs_type, rois_type):
@ -5162,7 +5167,7 @@ class SparseApplyFtrl(PrimitiveWithCheck):
args = {"var_dtype": var_dtype, "accum_dtype": accum_dtype, args = {"var_dtype": var_dtype, "accum_dtype": accum_dtype,
"linear_dtype": linear_dtype, "grad_dtype": grad_dtype} "linear_dtype": linear_dtype, "grad_dtype": grad_dtype}
validator.check_tensor_type_same(args, [mstype.float16, mstype.float32], self.name) validator.check_tensor_type_same(args, [mstype.float16, mstype.float32], self.name)
validator.check_tensor_type_same({"indices_dtype": indices_dtype}, [mstype.int32], self.name) validator.check_tensor_type_same({"indices_dtype": indices_dtype}, [mstype.int32, mstype.int64], self.name)
class SparseApplyFtrlV2(PrimitiveWithInfer): class SparseApplyFtrlV2(PrimitiveWithInfer):

Loading…
Cancel
Save