mindspore.nn.probability.bnn_layers.ConvReparam

查看源文件
class mindspore.nn.probability.bnn_layers.ConvReparam(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, has_bias=False, weight_prior_fn=NormalPrior, weight_posterior_fn=normal_post_fn, bias_prior_fn=NormalPrior, bias_posterior_fn=normal_post_fn)[源代码]

具有重构化参数的卷积变分层。 更多相关信息可以查阅 自动编码变分贝叶斯 相关论文。

参数:
  • in_channels (int) - 输入的channels \(C_{in}\)

  • out_channels (int) - 输出的channels \(C_{out}\)

  • kernel_size (Union[int, tuple[int]]) - 数据类型是 int 或2个 int 的元组。内核大小指定二维卷积窗口的高度和宽度。若为一个整数则高度和宽度均为该值,若为元组则两个值分别为高度和宽度。

  • stride (Union[int, tuple[int]]) - 内核移动的距离,若是一个整数表示,则移动的高度和宽度都是步幅,或者两个整数的元组分别表示移动的高度和宽度。默认值:1。

  • pad_mode (str) - 指定填充模式。可选值是”same”、”valid”和”pad”。默认值:”same”。

    • same:采用补全方式。输出高度和宽度将与输入相同。将在水平和垂直方向上计算填充的总数,并尽可能均匀地分布在顶部和底部、左侧和右侧。否则,最后的额外填充将从底部和右侧完成。如果设置了此模式,则 padding 必须为0。

    • valid:采用丢弃的方式。输出的可能最大高度和宽度将不带 padding 返回。多余的像素将被丢弃。如果设置了此模式,则 padding 必须为0。

    • pad:输入两侧的隐式 padding。 padding 的值将被填充到输入 Tensor 边界。 padding 必须大于或等于0。

  • padding (Union[int, tuple[int]]) - 输入两侧的隐式 padding 。默认值:0。

  • dilation (Union[int, tuple[int]]) - 数据类型是 int 或2个 int 的元组。该参数指定空洞卷积的空洞率。如果设置为k>1,将有k−1每个采样位置跳过的像素。它的值必须大于或等于1,并受输入的高度和宽度限制。默认值:1。

  • group (int) - 将过滤器拆分为组,in_channelsout_channels 必须能被组数整除。默认值:1。

  • has_bias (bool) - 指定层是否使用偏置向量。默认值:false。

  • weight_prior_fn (Cell) - 权重的先验分布。它必须返回一个 MindSpore 分布实例。默认值:NormalPrior。(创建标准正态分布的一个实例)。当前版本仅支持正态分布。

  • weight_posterior_fn (function) - 采样权重的后验分布。它必须是一个函数句柄,它返回一个 MindSpore 分布实例。默认值:normal_post_fn。当前版本仅支持正态分布。

  • bias_prior_fn (Cell) - 偏置向量的先验分布。它必须返回一个 MindSpore 分布实例。默认值:NormalPrior(创建标准正态分布的实例)。当前版本仅支持正态分布。

  • bias_posterior_fn (function) - 采样偏差向量的后验分布。它必须是一个函数句柄,它返回一个 MindSpore 分布实例。默认值:normal_post_fn。当前版本仅支持正态分布。

输入:
  • input (Tensor) - 输入 Tensor 的 shape 为 \((N, C_{in})\)

输出:

Tensor,输出张量的形状是 \((N, C_{out}, H_{out}, W_{out})\)

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor
>>> from mindspore.nn.probability import bnn_layers
>>> net = bnn_layers.ConvReparam(120, 240, 4, has_bias=False)
>>> input = Tensor(np.ones([1, 120, 1024, 640]), mindspore.float32)
>>> output = net(input).shape
>>> print(output)
(1, 240, 1024, 640)