提交 e2fca6f0 编写于 作者: Z Zhang Ting 提交者: hong

modified cn doc for image_resize and resize_nearest/bilinear/trilinear,...

modified cn doc for image_resize and resize_nearest/bilinear/trilinear, test=develop, test=document_preview (#1161)
上级 9ea76ed4
...@@ -5,6 +5,8 @@ image_resize ...@@ -5,6 +5,8 @@ image_resize
.. py:function:: paddle.fluid.layers.image_resize(input, out_shape=None, scale=None, name=None, resample='BILINEAR', actual_shape=None, align_corners=True, align_mode=1) .. py:function:: paddle.fluid.layers.image_resize(input, out_shape=None, scale=None, name=None, resample='BILINEAR', actual_shape=None, align_corners=True, align_mode=1)
**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。
调整一个batch中图片的大小。 调整一个batch中图片的大小。
输入张量的shape为(num_batches, channels, in_h, in_w)或者(num_batches, channels, in_d, in_h, in_w),并且调整大小只适用于最后两、三个维度(深度,高度和宽度)。 输入张量的shape为(num_batches, channels, in_h, in_w)或者(num_batches, channels, in_d, in_h, in_w),并且调整大小只适用于最后两、三个维度(深度,高度和宽度)。
...@@ -114,12 +116,12 @@ https://en.wikipedia.org/wiki/Bilinear_interpolation。 ...@@ -114,12 +116,12 @@ https://en.wikipedia.org/wiki/Bilinear_interpolation。
https://en.wikipedia.org/wiki/Trilinear_interpolation。 https://en.wikipedia.org/wiki/Trilinear_interpolation。
参数: 参数:
- **input** (Variable) - 图片调整层的输入张量,这是一个shape=4的张量(num_batches, channels, in_h, in_w)或者5维张量(num_batches, channels, in_d, in_h, in_w) - **input** (Variable) - 图片调整层的输入张量,这是一个shape为(num_batches, channels, in_h, in_w)的4-D张量或者shape为(num_batches, channels, in_d, in_h, in_w)的5-D张量
- **out_shape** (list|tuple|Variable|None) - 图片调整层的输出,输入为4D张量时shape为(out_h, out_w)。输入为5D张量时shape为(out_d, out_h, out_w),默认值:None - **out_shape** (list|tuple|Variable|None) - 图片调整层的输出,输入为4D张量时shape为(out_h, out_w)。输入为5D张量时shape为(out_d, out_h, out_w),默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。
- **scale** (float|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None - **scale** (float|Variable|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None
- **name** (str|None) - 该层的名称(可选)。如果设置为None,该层将被自动命名 - **name** (str|None) - 该层的名称(可选)。如果设置为None,该层将被自动命名
- **resample** (str) - 重采样方法。支持“双线性”,“三线性”,“临近插值”,。默认值:双线性插值 - **resample** (str) - 重采样方法。支持“双线性”,“三线性”,“临近插值”,。默认值:双线性插值
- **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`actual_shape` 而不是 :code:`out_shape` 。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`out_shape` ,因为 :code:`actual_shape` 未来将被弃用。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None
- **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True
- **align_mode** (int)- 双线性插值的可选项。 可以是 '0' 代表src_idx = scale *(dst_indx + 0.5)-0.5;可以为'1' ,代表src_idx = scale * dst_index。 - **align_mode** (int)- 双线性插值的可选项。 可以是 '0' 代表src_idx = scale *(dst_indx + 0.5)-0.5;可以为'1' ,代表src_idx = scale * dst_index。
...@@ -145,9 +147,31 @@ https://en.wikipedia.org/wiki/Trilinear_interpolation。 ...@@ -145,9 +147,31 @@ https://en.wikipedia.org/wiki/Trilinear_interpolation。
import paddle.fluid as fluid import paddle.fluid as fluid
input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32")
out = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST") # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime.
out = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST")
out0 = fluid.layers.image_resize(input, out_shape=[12, 12], resample="NEAREST")
# out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime.
# out_shape is a list in which each element is a integer or a tensor Variable
dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False)
out1 = fluid.layers.image_resize(input, out_shape=[12, dim1], resample="NEAREST")
# out1.shape = [-1, 3, 12, -1]
# out_shape is a 1-D tensor Variable
shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False)
out2 = fluid.layers.image_resize(input, out_shape=shape_tensor, resample="NEAREST")
# out2.shape = [-1, 3, -1, -1]
# when use actual_shape
actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False)
out3 = fluid.layers.image_resize(input, out_shape=[4, 4], resample="NEAREST", actual_shape=actual_shape_tensor)
# out3.shape = [-1, 3, 4, 4]
# scale is a Variable
scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False)
out4 = fluid.layers.image_resize(input, scale=scale_tensor)
# out4.shape = [-1, 3, -1, -1]
......
...@@ -5,6 +5,7 @@ resize_bilinear ...@@ -5,6 +5,7 @@ resize_bilinear
.. py:function:: paddle.fluid.layers.resize_bilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1) .. py:function:: paddle.fluid.layers.resize_bilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1)
**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。
根据指定的out_shape执行双线性插值调整输入大小,输出形状按优先级由actual_shape、out_shape和scale指定。 根据指定的out_shape执行双线性插值调整输入大小,输出形状按优先级由actual_shape、out_shape和scale指定。
...@@ -51,11 +52,11 @@ align_corners和align_mode是可选参数,插值的计算方法可以由它们 ...@@ -51,11 +52,11 @@ align_corners和align_mode是可选参数,插值的计算方法可以由它们
参数: 参数:
- **input** (Variable) - 输入为4d张量。 - **input** (Variable) - 输入是shape为(num_batches, channels, in_h, in_w)的4-D张量。
- **out_shape** (list|tuple|Variable|None) - 调整双线性层的输出形状,形式为(out_h, out_w)。默认值:None。 - **out_shape** (list|tuple|Variable|None) - 调整双线性层的输出形状,形式为(out_h, out_w)。默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。
- **scale** (float|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None。 - **scale** (float|Variable|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None。
- **name** (str|None) - 输出变量名。 - **name** (str|None) - 输出变量名。
- **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`actual_shape` 而不是 :code:`out_shape` 。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None - **actual_shape** (Variable) - 可选输入,用于动态指定输出形状。如果指定actual_shape,图像将根据给定的形状调整大小,而不是根据指定形状的 :code:`out_shape` 和 :code:`scale` 进行调整。也就是说, :code:`actual_shape` 具有最高的优先级。如果希望动态指定输出形状,建议使用 :code:`out_shape` , 因为 :code:`out_shape` 未来将被弃用。在使用actual_shape指定输出形状时,还需要设置out_shape和scale之一,否则在图形构建阶段会出现错误。默认值:None
- **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True
- **align_mode** (int)- 双线性插值的可选项。 可以是'0'代表src_idx = scale *(dst_indx + 0.5)-0.5;可以为'1' ,代表src_idx = scale * dst_index。 - **align_mode** (int)- 双线性插值的可选项。 可以是'0'代表src_idx = scale *(dst_indx + 0.5)-0.5;可以为'1' ,代表src_idx = scale * dst_index。
...@@ -69,12 +70,27 @@ align_corners和align_mode是可选参数,插值的计算方法可以由它们 ...@@ -69,12 +70,27 @@ align_corners和align_mode是可选参数,插值的计算方法可以由它们
import paddle.fluid as fluid import paddle.fluid as fluid
input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32") input = fluid.layers.data(name="input", shape=[3,6,9], dtype="float32")
out = fluid.layers.resize_bilinear(input, out_shape=[12, 12]) # input.shape = [-1, 3, 6, 9], where -1 indicates batch size, and it will get the exact value in runtime.
out0 = fluid.layers.resize_bilinear(input, out_shape=[12, 12])
# out0.shape = [-1, 3, 12, 12], it means out0.shape[0] = input.shape[0] in runtime.
# out_shape is a list in which each element is a integer or a tensor Variable
dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False)
out1 = fluid.layers.resize_bilinear(input, out_shape=[12, dim1])
# out1.shape = [-1, 3, 12, -1]
# out_shape is a 1-D tensor Variable
shape_tensor = fluid.layers.data(name="shape_tensor", shape=[2], dtype="int32", append_batch_size=False)
out2 = fluid.layers.resize_bilinear(input, out_shape=shape_tensor)
# out2.shape = [-1, 3, -1, -1]
# when use actual_shape
actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[2], dtype="int32", append_batch_size=False)
out3 = fluid.layers.resize_bilinear(input, out_shape=[4, 4], actual_shape=actual_shape_tensor)
# out3.shape = [-1, 3, 4, 4]
# scale is a Variable
scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False)
out4 = fluid.layers.resize_bilinear(input, scale=scale_tensor)
# out4.shape = [-1, 3, -1, -1]
...@@ -5,6 +5,8 @@ resize_trilinear ...@@ -5,6 +5,8 @@ resize_trilinear
.. py:function:: paddle.fluid.layers.resize_trilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1) .. py:function:: paddle.fluid.layers.resize_trilinear(input, out_shape=None, scale=None, name=None, actual_shape=None, align_corners=True, align_mode=1)
**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。
该层对输入进行放缩,基于给定的由 ``actual_shape`` , ``out_shape`` , ``scale`` 确定的输出shape,进行三线插值。三线插值是包含三个参数的线性插值方程(D方向,H方向, W方向),在一个3D格子上进行三个方向的线性插值。更多细节,请参考维基百科:https://en.wikipedia.org/wiki/Trilinear_interpolation 该层对输入进行放缩,基于给定的由 ``actual_shape`` , ``out_shape`` , ``scale`` 确定的输出shape,进行三线插值。三线插值是包含三个参数的线性插值方程(D方向,H方向, W方向),在一个3D格子上进行三个方向的线性插值。更多细节,请参考维基百科:https://en.wikipedia.org/wiki/Trilinear_interpolation
Align_corners和align_mode都是可选参数,可以用来设置插值的计算方法,如下: Align_corners和align_mode都是可选参数,可以用来设置插值的计算方法,如下:
...@@ -45,11 +47,11 @@ Align_corners和align_mode都是可选参数,可以用来设置插值的计算 ...@@ -45,11 +47,11 @@ Align_corners和align_mode都是可选参数,可以用来设置插值的计算
W_out = W_{in} * scale_{factor} W_out = W_{in} * scale_{factor}
参数: 参数:
- **input** (Variable) – 输入的四维张量 - **input** (Variable) – 输入是shape为(num_batches, channels, in_d, in_h, in_w)的5-D张量。
- **out_shape** (list|tuple|Variable|None) – 调整最近邻层的输出形状,形式为(out_h, out_w)。默认值:None。 - **out_shape** (list|tuple|Variable|None) – 调整最近邻层的输出形状,形式为(out_h, out_w)。默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。
- **scale** (float|None) – 输入高、宽的乘法器。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认: None - **scale** (float|None) – 输入高、宽的乘法器。 ``out_shape`` 和 ``scale`` 二者至少设置其一。 ``out_shape`` 具有比 ``scale`` 更高的优先级。 默认: None
- **name** (str|None) – 输出变量的命名 - **name** (str|None) – 输出变量的命名
- **actual_shape** (Variable) – 可选输入, 动态设置输出张量的形状。 如果提供该值, 图片放缩会依据此形状进行, 而非依据 ``out_shape`` 和 ``scale`` 。 即为, ``actual_shape`` 具有最高的优先级。 如果想动态指明输出形状,推荐使用 ``actual_shape`` 取代 ``out_shape`` 。 当使用 ``actual_shape`` 来指明输出形状, ``out_shape`` 和 ``scale`` 也应该进行设置, 否则在图形生成阶段将会报错。默认: None - **actual_shape** (Variable) – 可选输入, 动态设置输出张量的形状。 如果提供该值, 图片放缩会依据此形状进行, 而非依据 ``out_shape`` 和 ``scale`` 。 即为, ``actual_shape`` 具有最高的优先级。 如果想动态指明输出形状,推荐使用 ``out_shape`` ,因为 ``actual_shape`` 未来将被弃用。 当使用 ``actual_shape`` 来指明输出形状, ``out_shape`` 和 ``scale`` 也应该进行设置, 否则在图形生成阶段将会报错。默认: None
- **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True - **align_corners** (bool)- 一个可选的bool型参数,如果为True,则将输入和输出张量的4个角落像素的中心对齐,并保留角点像素的值。 默认值:True
- **align_mode** (bool) - (int,默认为'1'),双线性插值选项,src_idx = scale*(dst_index+0.5)-0.5时取'0',src_idx = scale*dst_index时取'1'。 - **align_mode** (bool) - (int,默认为'1'),双线性插值选项,src_idx = scale*(dst_index+0.5)-0.5时取'0',src_idx = scale*dst_index时取'1'。
...@@ -61,5 +63,27 @@ Align_corners和align_mode都是可选参数,可以用来设置插值的计算 ...@@ -61,5 +63,27 @@ Align_corners和align_mode都是可选参数,可以用来设置插值的计算
import paddle.fluid as fluid import paddle.fluid as fluid
input = fluid.layers.data(name="input", shape=[3,6,9,11], dtype="float32") input = fluid.layers.data(name="input", shape=[3,6,9,11], dtype="float32")
out = fluid.layers.resize_trilinear(input, out_shape=[12, 12, 12]) # input.shape = [-1, 3, 6, 9, 11], where -1 indicates batch size, and it will get the exact value in runtime.
out0 = fluid.layers.resize_trilinear(input, out_shape=[12, 12, 12])
# out0.shape = [-1, 3, 12, 12, 12], it means out0.shape[0] = input.shape[0] in runtime.
# out_shape is a list in which each element is a integer or a tensor Variable
dim1 = fluid.layers.data(name="dim1", shape=[1], dtype="int32", append_batch_size=False)
out1 = fluid.layers.resize_trilinear(input, out_shape=[12, dim1, 4])
# out1.shape = [-1, 3, 12, -1, 4]
# out_shape is a 1-D tensor Variable
shape_tensor = fluid.layers.data(name="shape_tensor", shape=[3], dtype="int32", append_batch_size=False)
out2 = fluid.layers.resize_trilinear(input, out_shape=shape_tensor)
# out2.shape = [-1, 3, -1, -1, -1]
# when use actual_shape
actual_shape_tensor = fluid.layers.data(name="actual_shape_tensor", shape=[3], dtype="int32", append_batch_size=False)
out3 = fluid.layers.resize_trilinear(input, out_shape=[4, 4, 8], actual_shape=actual_shape_tensor)
# out3.shape = [-1, 3, 4, 4, 8]
# scale is a Variable
scale_tensor = fluid.layers.data(name="scale", shape=[1], dtype="float32", append_batch_size=False)
out4 = fluid.layers.resize_trilinear(input, scale=scale_tensor)
# out4.shape = [-1, 3, -1, -1, -1]
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册