mindspore.nn.probability.bnn_layers.DenseReparam

查看源文件
class mindspore.nn.probability.bnn_layers.DenseReparam(in_channels, out_channels, activation=None, has_bias=True, weight_prior_fn=NormalPrior, weight_posterior_fn=normal_post_fn, bias_prior_fn=NormalPrior, bias_posterior_fn=normal_post_fn)[源代码]

具有重构参数化的密集变分层。

更多相关信息,请参阅论文 自动编码变分贝叶斯

将密集连接层应用于输入。该层将操作实现为:

\[\text{outputs} = \text{activation}(\text{inputs} * \text{weight} + \text{bias}),\]

此公式中,activation 为激活函数(若 activation 参数传入),是与创建层的输入具有相同数据类型的权重矩阵。weight 是从权重的后验分布采样的权重矩阵。bias 是与由层创建的输入具有相同数据类型的偏置向量(仅当 has_bias 为 True 时),从 bias 的后验分布中采样。

参数:
  • in_channels (int) - 输入通道的数量。

  • out_channels (int) - 输出通道的数量。

  • activation (str, Cell) - 应用于层输出的正则化函数。激活的类型可以是 str(例如’relu’)或 Cell(例如nn.ReLU())。注意,如果激活的类型是 Cell,则必须事先实例化。默认值:None。

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

  • 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) - input 的 shape 是 \((N, in\_channels)\)

输出:

Tensor,output 的 shape 是 \((N, out\_channels)\)

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor
>>> from mindspore.nn.probability import bnn_layers
>>> net = bnn_layers.DenseReparam(3, 4)
>>> input = Tensor(np.random.randint(0, 255, [2, 3]), mindspore.float32)
>>> output = net(input).shape
>>> print(output)
(2, 4)