From e2fca6f01b47bbe72d0ae1b4d759352c222899b5 Mon Sep 17 00:00:00 2001 From: Zhang Ting Date: Sat, 21 Sep 2019 11:51:53 +0800 Subject: [PATCH] modified cn doc for image_resize and resize_nearest/bilinear/trilinear, test=develop, test=document_preview (#1161) --- .../api_cn/layers_cn/image_resize_cn.rst | 36 ++++++++++++--- .../api_cn/layers_cn/resize_bilinear_cn.rst | 42 ++++++++++++------ .../api_cn/layers_cn/resize_nearest_cn.rst | Bin 2844 -> 4449 bytes .../api_cn/layers_cn/resize_trilinear_cn.rst | 34 +++++++++++--- 4 files changed, 88 insertions(+), 24 deletions(-) diff --git a/doc/fluid/api_cn/layers_cn/image_resize_cn.rst b/doc/fluid/api_cn/layers_cn/image_resize_cn.rst index 1d64be5e4..b040350c9 100644 --- a/doc/fluid/api_cn/layers_cn/image_resize_cn.rst +++ b/doc/fluid/api_cn/layers_cn/image_resize_cn.rst @@ -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) +**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 + 调整一个batch中图片的大小。 输入张量的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。 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)。 - - **out_shape** (list|tuple|Variable|None) - 图片调整层的输出,输入为4D张量时shape为(out_h, out_w)。输入为5D张量时shape为(out_d, out_h, out_w),默认值:None - - **scale** (float|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None + - **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。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。 + - **scale** (float|Variable|None)-输入的高度或宽度的乘数因子 。 out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None - **name** (str|None) - 该层的名称(可选)。如果设置为None,该层将被自动命名 - **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_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。 import paddle.fluid as fluid 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] diff --git a/doc/fluid/api_cn/layers_cn/resize_bilinear_cn.rst b/doc/fluid/api_cn/layers_cn/resize_bilinear_cn.rst index 7166a8dc8..5c1d548cd 100644 --- a/doc/fluid/api_cn/layers_cn/resize_bilinear_cn.rst +++ b/doc/fluid/api_cn/layers_cn/resize_bilinear_cn.rst @@ -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) +**注意:** 参数 ``actual_shape`` 将被弃用,请使用 ``out_shape`` 替代。 根据指定的out_shape执行双线性插值调整输入大小,输出形状按优先级由actual_shape、out_shape和scale指定。 @@ -51,11 +52,11 @@ align_corners和align_mode是可选参数,插值的计算方法可以由它们 参数: - - **input** (Variable) - 输入为4d张量。 - - **out_shape** (list|tuple|Variable|None) - 调整双线性层的输出形状,形式为(out_h, out_w)。默认值:None。 - - **scale** (float|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值:None。 + - **input** (Variable) - 输入是shape为(num_batches, channels, in_h, in_w)的4-D张量。 + - **out_shape** (list|tuple|Variable|None) - 调整双线性层的输出形状,形式为(out_h, out_w)。默认值:None。如果 :code:`out_shape` 是列表,每一个元素可以是整数或者shape为[1]的变量。如果 :code:`out_shape` 是变量,则其维度大小为1。 + - **scale** (float|Variable|None) - 用于输入高度或宽度的乘数因子。out_shape和scale至少要设置一个。out_shape的优先级高于scale。默认值: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_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是可选参数,插值的计算方法可以由它们 import paddle.fluid as fluid 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] diff --git a/doc/fluid/api_cn/layers_cn/resize_nearest_cn.rst b/doc/fluid/api_cn/layers_cn/resize_nearest_cn.rst index 824d2ab58c3923888a414f7adcd22c8330bb25db..40f8ffccaa4d54994422641bfbf5276eafbcbad3 100644 GIT binary patch literal 4449 zcmcgv-A)@<5We?Qj8drrYi(jcm1@jN>I1KTG9+xv} zd`8Qw$+#w8Q?j{uR>`SfD{)CR zeTaRQ%`3x!fKz+HeqUg#yeFirskirn%ht zWrNjstnZK5+Pyc;6?VUfUs<^kk{%;U$_Y89rY z{Ju_2frMLKmT-+QafkDSE2mIo)h*H<2nMZ}d)DnzG#CU{TCg7O4=Q8(-#E{HVa-K* zeGdt7YJZxoHoo`Su*z+-@gvt7#e4w#ee#t&m(dh=MLPhWqPrYO&n|#E13l4!7*KrR z{r5$@G27q*M4;~&2xajZWB@hC0Fxw6sTqod&kv6baTdI#KqYVhC|a%;8hzlPRV1bcn*xW$9z-Qe4%gEBF}p86_!% zgZH5;g-aB}=P=Btl^o6F(82Cizkh1HS;@4IECInsIuiq40-nH z-F9j_cHP&P74@nLZgz!EuNCl7$}lpy=*Wnohv!i~qa;;1 zoX*aU&}yXrG-i>n(p;E|Vjp_llzO-!&j_SwCioFu!|*{$nup#D$cEEtXU#Bq!ta+pZQ_5)@f`w)#tq2 zZjnaZVmk}glL|x=>7)|%l}A9g*zzOiDOESChUyCD;m>So(SEhfN;R|b0tFBX7DsFO zd#AAEaWD~?L`bZ(AsqZi{alC;FK@D?1MC*qC)o2{wom9IC-m_8L)7rf)6dFZg$HgZ zun)a1+`@i?2+X4m>*YhXxrb`{igIt^H|s@&@7#IG_U}2>W4l#FEa>hj=a&AoDl1lP z9rbx_!z#Z*t7Ok>LUc|L9R(uU4Kej#av^7A-DrBav6FEkh_-tzwzle?@VBr2)WZ;T z3M(Q3kw9!bX8k+%?VeS*WfkvWBlG73A`)Q`pZt1>{PHndEMY&hwvVuH+Ko*-PFQ$* zbwtAPpr9~zN%L@(LeGVTLLrGqPDvx;+D$G&8HoNb^dd6z=m)m{J8E=lI7)Pd{UEVb z3+Ay*3~((xV~0hnQhpl&t{f%zAPgVRtqTtm+?T za|=fv`@8+l`leH>A%yN_j{35!r$J!S;9NDGPHQ+lg}}YSJaaHuw9lU06?Kk`^Gbjm z(1by2M1n&OAO8@kn^3%P;puU#2F~t%XRU?FgEaxS%){SUdl5&*PHTS1I_Uu>9Rqk>8SH2V%qg;-qYmSWO`M-Zo17JKjy49My~lf!;6crS z4Ak>TY(AwXQlQB6(3Ckv$6fkP9eP&D0*+=f7>b_57q2<;I3?A&NWZhbFwy6eC`C>p zgo-gf$ZjU1=t8$4dp|&5E{zWOPglU_Ki&Zy@;L?kb(II$zj3zbr%3-N z0><8zfQfMl#*t`0keGkr`rspHY=9iD!%Gd`D#UH*$$Y+lHX~f@gah9d@QT#gmtg$g WvA|8m{J4Bxjt_X*O#vFa#qV$QVp78Z delta 498 zcmZutzb^w(99N{JWok%B$YYWQiNPciG4e;~rKuR2plWvN$F)tXZQhZ#*B^dWYH%)T zHMDov$!@j??!CL4FxtGkLkzy-`}}^-qxpW}$yS|if9M!^p&`&@i1x~AZWnQ!+N>e* zSZ9)O!9M9WQDFxk)^MKIT4_Dpgi-r^pA&!y;PGtusDR(&0b|R7RVoA-$LE%zK*?*J zj#{p7VjQ4Y1=HIaFRK!7yfO_d!bp@()mZ(N4g+)%#>G5NrWBdeuFHrPO(`dL+HW zYL&uq24@bwOPO5=8y{4(L`sobDqAs>i^(IUc?P`R)y>e-#tOCO_j-ZpFF}h%Fv=I& zqyoP%E|mZECf$bT?ntn_NN?o8x7Ue65lZ}0B2}e?TrjGd=B