如何在PyTorch中初始化权重?

如何通过例如He或Xavier初始化来初始化网络的权重和偏置?


回答:

单层

要初始化单层的权重,请使用来自torch.nn.init的函数。例如:

conv1 = torch.nn.Conv2d(...)torch.nn.init.xavier_uniform(conv1.weight)

或者,您可以通过写入conv1.weight.data(这是一个torch.Tensor)来修改参数。示例:

conv1.weight.data.fill_(0.01)

对于偏置也是同样适用的:

conv1.bias.data.fill_(0.01)

nn.Sequential或自定义nn.Module

将初始化函数传递给torch.nn.Module.apply。它将递归地初始化整个nn.Module中的权重。

apply(fn): 递归地对每个子模块(由.children()返回)以及自身应用fn。典型用途包括初始化模型的参数(另见torch-nn-init)。

示例:

def init_weights(m):    if isinstance(m, nn.Linear):        torch.nn.init.xavier_uniform(m.weight)        m.bias.data.fill_(0.01)net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2))net.apply(init_weights)

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中创建了一个多类分类项目。该项目可以对…

发表回复

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