BilinearInitializer

  • class paddle.fluid.initializer.BilinearInitializer())[源代码]

该接口为参数初始化函数,用于转置卷积函数中,对输入进行上采样。用户通过任意整型因子放大shape为(B,C,H,W)的特征图。

返回:对象

用法如下:

代码示例:

  1. import paddle.fluid as fluid
  2. import math
  3. factor = 2
  4. C = 2
  5. B = 8
  6. H = W = 32
  7. w_attr = fluid.param_attr.ParamAttr(
  8. learning_rate=0.,
  9. regularizer=fluid.regularizer.L2Decay(0.),
  10. initializer=fluid.initializer.Bilinear())
  11. x = fluid.data(name="data", shape=[B, 3, H, W],
  12. dtype="float32")
  13. conv_up = fluid.layers.conv2d_transpose(
  14. input=x,
  15. num_filters=C,
  16. output_size=None,
  17. filter_size=2 * factor - factor % 2,
  18. padding=int(math.ceil((factor - 1) / 2.)),
  19. stride=factor,
  20. groups=C,
  21. param_attr=w_attr,
  22. bias_attr=False)

上述代码实现的是将输入x(shape=[-1, 4, H, W])经过转置卷积得到shape=[-1, C, Hfactor, Wfactor]的输出,num_filters = C和groups = C 表示这是按通道转置的卷积函数,输出通道为C,转置卷积的groups为C。滤波器shape为(C,1,K,K),K为filter_size。该初始化函数为滤波器的每个通道设置(K,K)插值核。输出特征图的最终输出shape为(B,C,factorH,factorW)。注意学习率和权重衰减设为0,以便在训练过程中双线性插值的系数值保持不变