Batchnorm2d Pytorch – 为什么要将通道数传递给批规范化?

为什么我需要将之前的通道数传递给批规范化?批规范化应该对批次中的每个数据点进行归一化,为什么它还需要通道数呢?


回答:

批规范化具有可学习的参数,因为它包括一个仿射变换。

根据 nn.BatchNorm2d 的文档说明:

BatchNorm Formular

均值和标准差是基于小批次在每个维度上计算的,γ和β是大小为C的可学习参数向量(其中C是输入大小)。默认情况下,γ的元素设置为1,β的元素设置为0。

由于规范化是按通道计算的,参数γ和β是大小为num_channels的向量(每个通道一个元素),这导致每个通道都有单独的缩放和偏移。像PyTorch中的任何其他可学习参数一样,它们需要以固定大小创建,因此您需要指定通道数。

batch_norm = nn.BatchNorm2d(10)# γbatch_norm.weight.size()# => torch.Size([10])# βbatch_norm.bias.size()# => torch.Size([10])

注意:设置 affine=False 时不使用任何参数,也不需要通道数,但仍然需要指定它们,以便保持一致的接口。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注