mindspore.ops.ExtractVolumePatches
- class mindspore.ops.ExtractVolumePatches(kernel_size, strides, padding)[源代码]
从输入中提取数据,并将它放入”depth”输出维度中,”depth”为输出的第二维。
- 参数:
kernel_size (Union[int, tuple[int], list[int]]) - 长度为3或5的int列表。输入每个维度表示滑动窗口大小。必须是: \([1, 1, k_d, k_h, k_w]\) 或 \([k_d, k_h, k_w]\) 。如果 \(k_d = k_h = k_w\) ,则可以输入整数。
strides (Union[int, tuple[int], list[int]]) - 长度为3或5的int列表。 两个连续色块的中心在输入中的距离。必须是: \([1, 1, s_d, s_h, s_w]\) 或 \([s_d, s_h, s_w]\) 。如果 \(s_d = s_h = s_w\) ,则可以输入整数。
padding (str) - 要使用的填充算法的类型。可选值有”SAME”和”VALID”。
- 输入:
input_x (Tensor) - 一个五维的输入Tensor。数据类型必须为float16、float32,shape为 \((x_n、x_c、x_d、x_h、x_w)\) 。
- 输出:
Tensor,与输入的类型相同。如果填充为”VALID”,则shape为 \((x_n,k_d*k_h*k_w*x_c,1+(x_d-k_d)/s_d,1+(x_h-k_h)/s_h,1+(x_w-k_w)/s_w)\) ;如果填充”SAME”,则shape为 \((x_n,k_d*k_h*k_w*x_c,(x_d+s_d-1)/s_d,(x_h+s_h-1)/s_h,(x_w+s_w-1)/s_w)\) 。
- 异常:
TypeError - 如果 kernel_size 或 strides 不是一个list,tuple或int。
TypeError - 如果 input_x 不是Tensor。
TypeError - 如果 padding 不是str。
ValueError - 如果 kernel_size 的长度不是3或5,并且 kernel_size 不是int。
ValueError - 如果 strides 的长度不是3或5,并且 strides 不是int。
ValueError - 如果 padding 既不是”VALID”也不是”SAME”。
ValueError - 如果 kernel_size 或 strides 的元素不是正整数。
ValueError - 如果 input_x 不是五维的Tensor。
ValueError - 如果 input_x 的shape含有0。
ValueError - 如果 kernel_size 或 strides 的前两个数不等于1。
ValueError - 如果 padding 为”VALID”,并且 \(input\_x - kernel\_size\) 在d、h或w维上小于0。
ValueError - 如果 padding 为”SAME”,并且 \(padding\_needed = ((input\_x + strides - 1) / strides - 1) * strides + kernel\_size - input\_x\) 在d、h或w维中小于0。
ValueError - 如果x_h不等于1或x_w不等于1,并且 \(x_w + padding\_needed - k_w - s_w\) 小于0。
ValueError - 如果 \(x_d * x_h * x_w\) 大于2048。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> kernel_size = (1, 1, 2, 2, 2) >>> strides = (1, 1, 1, 1, 1) >>> padding = "VALID" >>> input_x = P.Reshape()(Tensor(np.arange(1, 28), mstype.float16), (1, 1, 3, 3, 3)) >>> output_y = ops.ExtractVolumePatches(kernel_size, strides, padding)(input_x) >>> print(output_y.shape) (1, 8, 2, 2, 2)