仅通过将所有初始权重设置为零的模型

数据挖掘 机器学习 Python 火炬 权重初始化
2022-02-24 23:06:09

在MusicNet的这个模型,他们将神经网络的初始权重设置为全零。

self.linear = torch.nn.Linear(regions*k, m, bias=False).cuda()
torch.nn.init.constant(self.linear.weight, 0)

但是,人们通常会随机化初始权重,如以下线程中所述。

  1. 用零初始化感知器权重
  2. 什么情况下可以将所有权重初始化为零
  3. 在反向传播中将所有初始权重设置为零的危险

基本上,这意味着我们不应该将初始权重设置为全零。

但是,当我通过注释一行尝试在 MusicNet 模型中使用随机权重时

self.linear = torch.nn.Linear(regions*k, m, bias=False).cuda()
# torch.nn.init.constant(self.linear.weight, 0

该模型不再学习,准确率非常低(0.02 与原始模型中的 0.6 相比)

我发现了什么

如果初始权重是随机的,则网络似乎无法学习任何有意义的权重。但是当我们将初始权重设置为零时,网络可以学到一些有意义的东西。

为什么会这样?我不明白为什么在这个模型中只有零权重有效。 在此处输入图像描述

0个回答
没有发现任何回复~